我的第一个Hibernate程序
1、建表建序列(所用数据库为Oracle,数据库名为XE,创建用户hibernate,密码为123456)
conn system/manager;
create user hibernate identified by 123456;
grant connect to hibernate;
grant resource to hibernate;
conn hibernate/123456; create table tb_Employee(
pk_Employee_ID number primary key,
name varchar2(64) not null,
email varchar2(64) not null,
hiredate date not null
); create sequence emp_seq
start with 1
increment by 1
minvalue 1
nomaxvalue
nocycle
nocache;
2、程序结构
3、各个文件
Employee.java
package com.tfj.domain; import java.io.Serializable;
import java.util.Date; //这是一个domain对象(实际上就是JavaBean/有些人pojo)
//他和Employee对应
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private String email;
private Date hiredate; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
} public java.util.Date getHiredate() {
return hiredate;
} public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
}
Employee.hbm.xml
<?xml version="1.0"?>
<!--该文件要清楚地表述出 类 和 表 的对应关系 -->
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2016-1-10 22:39:57 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<!-- name : 表示包中的类名 table 表示 该类和哪个表映射 -->
<class name="com.tfj.domain.Employee" table="tb_Employee">
<!-- id元素专门用于指定主键是如何生成,hibernate设计者认为,我们每一个表都应该有一个主键 -->
<!-- name:表示类的哪个属性是主键 -->
<id name="id" type="java.lang.Integer">
<column name="pk_Employee_ID" />
<!-- 指定主键生成策略 -->
<generator class="sequence">
<param name="sequence">emp_seq</param>
</generator>
</id>
<property name="name" type="java.lang.String">
<column name="name" />
</property>
<property name="email" type="java.lang.String">
<column name="email" />
</property>
<property name="hiredate" type="java.util.Date">
<column name="hiredate" />
</property>
</class>
</hibernate-mapping>
TestMain.java
package com.tfj.view; import java.util.Date; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; import com.tfj.domain.Employee; public class TestMain {
public static void main(String[] args) {
// 添加一个雇员
// 1.得到Configuration
Configuration configuration = new Configuration().configure();
// 2.得到SessionFactory(会话工厂,这是一个重量级的类,因此要保证在一个应用程序中只能有一个)
SessionFactory sessionFactory = configuration.buildSessionFactory();
// 3. 从SessionFactory中取出一个Session对象(它表示 和数据库的出一次会话)
Session session = sessionFactory.openSession();
// 4. 开始一个事务
Transaction transaction = session.beginTransaction();
// 保存一个对象到数据库(持久化一个对象)
Employee emp = new Employee();
emp.setName("tufujie");
emp.setEmail("tufujiepuyang@foxmail.com");
emp.setHiredate(new Date());
// 不要给id,因为它是自增的
session.save(emp);// insert into tb_Employee (name, email, hiredate, pk_Employee_ID) values
// (?, ?, ?, ?)
transaction.commit();
session.close();
}
}
hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- 该文件用于配置连接数据的种类,用户名,密码,ul ,驱动.. 连接池,二级缓存.. 有点类似strus struts-config.xml -->
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:XE</property>
<property name="connection.username">hibernate</property>
<property name="connection.password">123456</property>
<!-- 配置显示hibernate生成的 sql ,特别说明,在开发阶段设为true利于调试,在使用项目则设为false-->
<property name="show_sql">true</property>
<!-- 配置数据库的方言/ -->
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<!-- 配置管理的对象映射文件 -->
<mapping resource="com/tfj/domain/Employee.hbm.xml"/>
</session-factory>
</hibernate-configuration>
我的第一个Hibernate程序的更多相关文章
- 攻城狮在路上(壹) Hibernate(二)--- 第一个hibernate程序
1.直接通过JDBC API持久化实体域对象: A.java.sql常用接口和类: DriverManager:驱动程序管理器,负责创建数据库连接. Connection:代表数据库连接. State ...
- Hibernate入门(1)-第一个Hibernate程序
Hibernate入门(1)-第一个Hibernate程序 Hibernate是最著名的ORM工具之一,本系列文章主要学习Hibernate的用法,不涉及Hibernate的原理.本文介绍第一个Hib ...
- 第一个Hibernate程序
一 新建一个Java工程(Hibernate) 在src目录下创建一个名为"hibernate.cfg.xml"的文件并配置好各个属性,如下: <?xml version=& ...
- hibernate入门配置及第一个hibernate程序
学习了hibernate后就想先给大家分享一下它的配置方法: jar包导入 一.数据库表的创建 二.开启hibernate配置 编译器:eclipse 数据库:mysql 1.创建第一个xml文件 ...
- 【SSH三大框架】Hibernate基础第一篇:编写第一个Hibernate程序
接下来这几章节学习的是Hibernate,Hibernate的主要作用就是用来和数据库进行连接,简化了JDBC的操作. 首先,我们创建项目,然后把Hibernate的jar包和sqlserver的驱动 ...
- 第一个hibernate程序HelloWorldHibernate
HelloWorldHibernate步骤: HelloWorld 1,新建java项目hibernate_0100_HelloWorld 2,学习User-library-hibernate,并加入 ...
- 第一个Hibernate 程序
使用MyEclipse建立Hibernate工程 index页面的Jsp源文件 <%@ page language="java" import="java.util ...
- Java程序员从笨鸟到菜鸟之(五十一)细谈Hibernate(二)开发第一个hibernate基本详解
在上篇博客中,我们介绍了<hibernate基本概念和体系结构>,也对hibernate框架有了一个初步的了解,本文我将向大家简单介绍Hibernate的核心API调用库,并讲解一下它的基 ...
- 一个Hibernate小程序
基本步骤 在前一篇博文Hibernate环境搭建中为大家详细的介绍如何搭建一个学习新类库的学习环境.今天,为大家带来一个Hibernate小例子,让大家能够快速上手. 步骤如下: 1.配置hibern ...
随机推荐
- C# Generic(转载)
型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性.泛型为.NET框架引入了类型参数(type parameters)的概念.类型参数使得设计类和方法时,不必确定一个或多个具体 ...
- Mysql 流程控制
流程控制 分支结构 if分支结构 语法: if 条件then -- 语句体 else -- 缺省语句体 end if; 示例: 循环结构 whi ...
- 21_resultMap和resultType总结
[resultType] [ 作用 ] 将查询结果按照SQL列名与pojo属性名一致性 映射到pojo中. [ 使用场合 ] 常见的一些明细记录的展示,比如用户购买商品的明细,将关联查询信息全部展示在 ...
- [转载]《STL源码剖析》阅读笔记之 迭代器及traits编程技法
本文从三方面总结迭代器 迭代器的思想 迭代器相应型别及traits思想 __type_traits思想 一 迭代器思想 迭代器的主要思想源于迭代器模式,其定义如下:提供一种方法,使之能够依 ...
- 九度OJ 1104 整除问题
题目地址:http://ac.jobdu.com/problem.php?pid=1104 题目描述: 给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除. 输入: 两个整数n(2 ...
- 简单模拟struts2核心控制器利用反射原理实现参数传递和物理视图跳转
在能够运用struts2框架进行简单网站开发后,对struts2的一些较原框架强大的功能希望有更深刻的理解,于是尝试从底层开始摸索,本文就在重新学习struts2后,利用简单代码对核心控制器的主要功能 ...
- jQuery 1.7以后 jQuery2 新元素绑定事件on替代live
最近做了一个类别动态加载的功能,jQuery版本用的是2.02. 绑定事件jQuery1.7之前用的是live或者是bind.新版的jQuery新增了on方法 由于子类别是动态加载的,默认是不会有事件 ...
- 通过LDF文件实现日志回滚将数据恢复(转)
该方法数据库恢复(www.db-recovery.com)思路 1. 创建数据TEST 2. 创建表TEMP_01 3. 在表TEMP_01中插入100条数据 4. 备份现有的数据库 5. 再次向表T ...
- css3的3D翻牌效果
利用hover控制动画,一个从翻面向正面翻,一个从正面向反面翻. 利用:backface-visibility: hidden;控制反面的元素不显示. 不支持的浏览器直接切换层级换图. <!DO ...
- 一个页面,多个flash(刚学jq插件)
只贴js那部分哦 调用 // flash轮播图 var sumF=$('.btnTabs span').length/4; //有四个flash var flashT01=new flash($('. ...