一、Hibernate 开发环境搭建 4.3
1、导包 2、创建hibernate.cfg.xml配置文件 3、创建实体类 4、创建映射文件 实体类名.hbm.xml 配置文件
二、hibernate.cfg.xml剖析
1、数据库链接配置
1 <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 2 <property name="connection.url">jdbc:mysql://localhost:3306/hiber01</property> 3 <property name="connection.username">root</property> 4 <property name="connection.password">root</property>
2、可选配置
hibernate默认使用 的连接池,
1 <property name="connection.pool_size">1</property>
数据库方言
1 <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
是否输出SQL语句
1 <property name="show_sql">true</property>
c3p0连接池配置
1 <property name="c3p0.min_size">10</property> 2 <property name="c3p0.max_size">100</property> 3 <property name="c3p0.timeout">3000</property>
建表策略
1 <property name="hbm2ddl.auto">none</property>
可选值:
none:不做任何事
update:如果没有表则建表,有表则更新
create-drop:操作时建表,操作完毕删表
validate:验证数据库表和mapping映射关系是否正确
· 注册映射文件
1 <mapping resource="com/rl/hiber/model/User.hbm.xml"/>
三、映射文件配置
1 <!-- 配置类域表之间的关系 --> 2 <class name="com.tx.hiber.model.Person" table="t_person"> 3 <!-- 主键映射 --> 4 <id name="id" column="p_id"> 5 <!-- 主键生成策略assigned手动生成、increment sequence native uuid --> 6 <generator class="assigned"></generator> 7 </id> 8 <!-- 属性映射 --> 9 <property name="pname" column="pname"></property> 10 <property name="pgender" column="pgender"></property> 11 <property name="birthday" column="birthday"></property> 12 </class>
class属性: name:全路径名称 table:表名
主键映射: 映射策略有:assigned(手动指定) increment(主键自增、有线程并发问题) identity(Mysql自增,数值类型,有锁机制) sequence(Oracle数据库自增)
native(智能选择自增) uuid(生成32位字符串)
property属性:name:属性名 column:列名 type:hibernate提供的数据类型 length:映射到数据库表中字段长度 not-null 不为空 unique-key:唯一约束键名
四、创建sesionFactory
1 //创建配置对象 2 Configuration conf = new Configuration(); 3 //读取配置文件 4 conf.configure("hibernate.cfg.xml"); 5 //注册配置属性 6 ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(conf.getProperties()).build(); 7 //创建工厂 8 sf = conf.buildSessionFactory(sr);
五、hibernate对象三种状态