Hibernate学习笔记
Hibernate是ORM(Object Relationship Mapping)对象映射关系的持久层框架
开发环境eclipse + MySQL8.0 + JDK1.7+hibernate5
1.准备工作:创建测试用的数据库
2.在eclipse中新建项目一个项目
导入相关jar包:
a.数据库驱动包:
b.hibernate/lib/required/下的jar包:
c.日志记录包:
3.创建实体类User.java:
public class User { private int uid; private String username; private String userAddress; private String userPassword; public Integer getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getUserAddress() { return userAddress; } public void setUserAddress(String userAddress) { this.userAddress = userAddress; } public String getUserPassword() { return userPassword; } public void setUserPassword(String userPassword) { this.userPassword = userPassword; } }
4.在实体类同目录下创建映射配置文件User.bhm.xml,配置文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- 建立类和标的映射关系 --> <!-- class标签:用来建立类和表的映射 name:类的全路径 table:数据库表名 catalog:数据库名 --> <class name="com.hxzy.hibernate_demo.entity.User" table="t_user"> <!-- id标签:用来建立类中的属性与标的主键字段的对应 name:类中的属性名 column:表中对应的字段名 (若与属性名相同)可省略 length:字段的长度 type:类型 --> <id name="uid" column="uid"> <!-- 主键生成策略 --> <generator class="native" /> </id> <!-- 建立类中普通属性与表中字段的映射 --> <!-- property标签:用来建立类中普通属性与表中字段的映射 name:类中的属性名 column:表中字段名,若与类名一致可省略 length:字段长度 type:类型,Java类型,hibernate类型,SQL类型 --> <property name="username" column="username"/> <property name="userAddress" column="userAddress"/> <property name="userPassword" column="userPassword"/> </class> </hibernate-mapping>
5.创建Hibernate核心配置文件,一般放在src目录下命名为hibernate.cfg.xml,文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 必要的配置信息 --> <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver </property>
<!-- 数据库地址,若不加?useUnicode=true&characterEncoding=utf8可能出现连接失败,或汉字存储乱码问题 --> <property name="hibernate.connection.url"> jdbc:mysql:///hibernate_demo?useUnicode=true&characterEncoding=utf8 </property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">111111</property> <!-- hibernate属性 --> <!-- 方言:设定链接数据库类型 --> <!-- 显示SQL语句 --> <property name="hibernate.show_sql">true</property> <!-- 格式化SQL语句 --> <property name="hibernate.format_sql">true</property> <!-- hbm2ddl.auto的取值 none:不用hibernate自动生成 create:每次都会创建新表 create:drop:每次创建信表,执行结束后删掉 update:如果库中有表,使用原来的表,没有则自动生成,可以更新表结构? validate: 只使用原有的表结构,对映射关系进行校验 --> <property name="hibernate.hbm2ddl.auto">update</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 加载映射 --> <mapping resource="com/hxzy/hibernate_demo/entity/User.hbm.xml" /> </session-factory> </hibernate-configuration>
6.创建测试类
public class HibernateTest { @Test public void test1(){ //1.加载配置文件 Configuration cfg = new Configuration(); //配置文件加载!!!!! cfg.configure();
//可以简写为:
//Configuration cfg = new Configuration().configure();
//2.创建一个sessionFactory,一般会将SessionFactory包装为一个工具类 SessionFactory sf = cfg.buildSessionFactory(); //3.创建Session对象 Session session = sf.openSession(); //4.开启事务 Transaction ts = session.beginTransaction(); //5.执行相关操作 User user = new User(); user.setUsername("古树柳"); user.setUserPassword("111111"); user.setUserAddress("宫家庄"); session.save(user); //6.事务提交 ts.commit(); //7.释放资源 session.close(); sf.close(); } public static void main(String[] args) { } }