hibernate 笔记

第一个hibernate项目

1、新建一个java项目

2、创建User Library
 * HIBERNATE_HONE/lib/*.jar
 * HIBERNATE_HOME/hibernate3.jar
 * MySql JDBC驱动
 
3、创建hibernate配置文件hibernate.cfg.xml 
 
4、创建实体类

5、提供User实体类的映射文件User.hbm.xml

6、将User.hbm.xml文件配置到hibernate.cfg.xml文件中

7、创建数据库表,采用hibernate工具类,将实体类生成数据库表

8、开发客户端

为了调试方便将log4j配置文件拷贝到项目中,可以在hibernate.cfg.xml中加入如下配置,来观看hibernate sql的执行:
<property name="hibernate.show_sql">true</property>

-------------------------------------

测试实体对象的生命周期

junit简介:
 * 编写测试类xxxTest,需要继承TestCase
 * 编写单元测试方法,测试方法必须以test开头,测试方法不能含有参数和返回值,如:
   public void testHello1() {}
 * 最好单元测试的代码单独建立一个目录
 
了解session的CRUD操作

了解session.get()和session.load()方法的区别?
 * get不支持lazy,load支持lazy
 * 采用get加载数据,如果数据库中不存在相应的数据,那么返回null;
   采用load加载数据,如果数据库中不存在相应的数据,那么抛出ObjectNotFoundException

Transient状态:
 * 不处在session的缓存中,不和任何session实例有关联
 * 在数据库中没有相应的记录
 
Persistent状态:
 * 位于session的缓存中,persistent状态的对象总是和session实例关联
 * persistent状态的对象和数据库表中的记录有对应
 * persistent状态的对象发生改变会自动和数据库同步
 
Detached状态:
 * 不处于session的缓存中,不和任何session实例有关联
 * Detached状态的对象在数据库中有与之对应的记录
    
------------------------------------------------------
hibernate基本映射

实体类---》数据库表
普通属性---》表字段

通过<class>映射成数据库表,通过<property>标签将普通属性映射成数据库表字段
所谓普通属性指不包含自定义类、集合、数组等等

实体类的设计原则:
 * 实现一个默认的(即无参数的)构造方法(constructor)
 * 提供一个标识属性(identifier property)(可选)
 * 使用非final的类 (可选)
 * 为持久化字段声明访问器(accessors)

主键生成策略
 * uuid
 * native
 * assigne

 

 

hibernate.cfg.xml

set  order-by="orderNo"  set不能排序

你可能感兴趣的:(sql,mysql,Hibernate,xml,单元测试)