hibernate入门配置

第一步:建立Hibernate工程

第二步:建立数据库,可将编码格式设置成UTF-8

第三步:引入hibernate相关的jar

包结构的详解:

hibernate入门配置hibernate入门配置  

第四步:持久化对象Customer.java

在cn.itcast.a_primer中创建持久化对象的javabean,hibernate的实质就是操作对象的过程,就是操作数据库表。

创建表和对应的javabean文件:hibernate入门配置

1
2
3
4
5
6
7
8
public class Customer implements Serializable{
     
     private Integer id;
     private String name;
     private Integer age;
     private String des;
     //省略set和get方法
}

第五步:hibernate.cfg.xml

在cn.itcast.a_primer中创建hibernate.cfg.xml,hibernate.cfg.xml是hibernate的核心配置文件,用来查询数据库,配置如何操作数据库,加载映射文件等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<? 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">
< hibernate-configuration >
< session-factory >
<!-- 连接数据库 -->
< property name = "hibernate.connection.driver_class" >com.mysql.jdbc.Driver</ property >
< property name = "hibernate.connection.url" >jdbc:mysql://localhost:3306/itcasthibernate?useUnicode=true&characterEncoding=utf8</ property >
< property name = "hibernate.connection.username" >root</ property >
< property name = "hibernate.connection.password" >root</ property >
<!-- 其他配置 -->
<!-- 方言:用来指定hibernate操作的数据库 -->
< property name = "hibernate.dialect" >org.hibernate.dialect.MySQL5Dialect</ property >
<!-- hibernate操作对象用来执行操作数据库表,在控制台中显示sql语句 -->
< property name = "hibernate.show_sql" >true</ property >
<!--
  hibernate.hbm2ddl.auto:用来建立对象和表的关联
  * create:每次都会先删除表,再创建表,问题不能保存数据
  * none:默认值:有表的时候,可以直接操作,没有表就会报错,默认向表中追加数据
  * update:没有表就创建表,有表就直接操作数据
  -->
< property name = "hibernate.hbm2ddl.auto" >update</ property >
<!-- 加载映射文件
1:class="cn.itcast.a_primer.Customer"(要求类和映射文件放在同一个目录下,而且文件名要相同)
2:resource=cn/itcast/a_primer/Customer.hbm.xml(第二种方式)
  
<mapping resource="cn/itcast/a_primer/Customer.hbm.xml"/>-->
</ session-factory >
</ hibernate-configuration >

创建 Hibernate 配置文件, Hibernate 从其配置文件中读取和数据库连接的有关信息, 这个文件应该位于应用的 classpath 下.

 注:该映射文件的规范在org.hibernate.hibernate-configuration-3.0.dtd文件中

hibernate入门配置





第六步:customer.hbm.xml

在javabean的同级目录下创建hibernate的映射文件(映射文件用来将持久化对象和属性关联数据库表和字段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<? xml version = "1.0" encoding = "UTF-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC
     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
建立持久化对象和数据库表的关联关系(映射文件)
     * 类映射表
     * 类中的属性映射表中的字段
  -->
< hibernate-mapping >
<!--
对象关联表
name:对象的全路径(底层使用反射)
table:映射表的名称
  -->
< class name = "cn.itcast.a_primer.Customer" table = "a_customer" >
<!--
对象的属性映射表的字段
type:表示hibernate的映射类型,用来建立java类型和数据库类型的桥梁
* 使用java类型,比如java.lang.Integer
* integer
   name:对象中的属性名称
   column:表中的字段名称
* generator:hibernate的生成策略(重点)
sql-type="varchar(20)",指定数据库表中列的类型,默认是varchar(255)
  -->
< id name = "id" type = "integer" >
< column name = "id" ></ column >
< generator class = "increment" ></ generator >
</ id >
< property name = "name" type = "string" >
< column name = "name" ></ column >
</ property >
< property name = "age" column = "age" type = "integer" ></ property >
< property name = "des" column = "des" type = "string" ></ property >
</ class >
</ hibernate-mapping >

这里

创建对象-关系映射文件

Hibernate 采用 XML 格式的文件来指定对象和关系数据之间的映射. 在运行时 Hibernate 将根据这个映射文件来生成各种 SQL 语句

映射文件的扩展名为 .hbm.xml 这里Customer.hbm.xml文件

注:该映射文件的规范在org.hibernate.hibernate-mapping-3.0.dtd文件中

hibernate入门配置

第七步:测试单表操作的CRUD

使用测试代码进行测试,创建App的测试类,使用junit进行测试

(1) hibernate的SessionFactory在初始化阶段只初始化一次即可,所有使用静
态代码块进行封装,其中Configuration是用来加载hibernate的配置文件和映射文件的,加载后可以获取SessionFactory。

1
2
3
4
5
6
7
private static SessionFactory sf = null ;
static {
     Configuration configuration = new Configuration();
     configuration.configure( "cn/itcast/a_primer/hibernate.cfg.xml" );
     configuration.addClass(Customer. class );
     sf = configuration.buildSessionFactory();
}


(2) 新增保存:save方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**保存*/
@Test
public void save(){
     Session s = sf.openSession();
     Transaction tr = s.beginTransaction();
 
     Customer c = new Customer();
     c.setName( "洪七公" );
     c.setAge( 60 );
     c.setDes( "帮助" );
     s.save(c);
 
     tr.commit(); //实质上执行了2步操作,1:s.flush();//清理缓存,让session缓存中的数据与数据库同步,2:事务提交
     s.close(); //Session的缓存就没有了
}

(3) 更新:update方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**更新*/
@Test
public void update(){
     Session s = sf.openSession();
     Transaction tr = s.beginTransaction();
 
     Customer c = new Customer();
     c.setId( 3 );
     c.setName( "黄老邪" );
     c.setAge( 59 );
     c.setDes( "药师" );
     s.update(c);
     tr.commit();
     s.close();
}

(4) 删除:delete方法

1
2
3
4
5
6
7
8
9
10
11
@Test
public void delete(){
     Session s = sf.openSession();
     Transaction tr = s.beginTransaction();
 
     Customer c = new Customer();
     c.setId( 3 );
     s.delete(c);
     tr.commit();
     s.close();
}

(5) 查询:get和load方法

1
2
3
4
5
6
7
8
9
10
/**使用ID查询信息*/
@Test
public void findCustomerById(){
     Session s = sf.openSession();
     Transaction tr = s.beginTransaction();
     Customer c = (Customer) s.get(Customer. class , 2 );
     System.out.println(c.getId()+ "   " +c.getName()+ "   " +c.getAge()+ "   " +c.getDes());
     tr.commit();
     s.close();
}

(6) 查询:query查询(支持hql语句,sql语句,qbc语句)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**查询所有信息*/
@Test
public void findAllCustomerList(){
     Session s = sf.openSession();
     Transaction tr = s.beginTransaction();
/**使用Hql语句:操作持久对象和属性
  * 复习sql语句:操作数据库表和数据库表的列*/
     Query query = s.createQuery( "from Customer o" );
     List<Customer> list = query.list();
     if (list!= null && list.size()> 0 ){
     for (Customer c:list){
      System.out.println(c.getId()+ "   " +c.getName()+ "   " +c.getAge()+ "   " +c.getDes());
     }
}
     tr.commit();
     s.close();
}

  附录:

hibernate入门配置  

 



来自为知笔记(Wiz)


你可能感兴趣的:(hibernate入门配置)