第一个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不能排序