第一个hibernate的应用
1、在eclipse或者idea中创建hibernate的项目
2、导入相应的jar包
加入junit的相关jar包
3、创建hibernate.cfg.xml的配置文件,hibernate的配置文件主要用于数据库连接和hibernate运行时所需要的各种属性,每个配制文件对应的是一个Congiguration
hibernate.hbm2ddl.auto取值的详解:
create : 会根据 .hbm.xml 文件来生成数据表, 但是每次运行都会删除上一次的表 ,重新生成表, 哪怕二次没有任何改变
create-drop : 会根据 .hbm.xml 文件生成表,但是SessionFactory一关闭, 表就自动删除
update : 最常用的属性值,也会根据 .hbm.xml 文件生成表, 但若 .hbm.xml 文件和数据库中对应的数据表的表结构不同, Hiberante 将更新数据表结构,但不会删除已有的行和列
validate : 会和数据库中的表进行比较, 若 .hbm.xml 文件中的列在数据表中不存在,则抛出异常
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//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> <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">mysql</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> //是否格式化sql <property name="hibernate.format_sql">true</property> //是否在控制台显示sql <property name="hibernate.show_sql">true</property> //自动生成数据表的策略,值有create,update,create-drop,validate <property name="hibernate.hbm2ddl.auto">update</property> <!-- 指定关联的.hbm.xml文件 --> <mapping resource="com/hibernate/entity/User.hbm.xml"></mapping> </session-factory> </hibernate-configuration>
4、创建对应的实体类以及实体类的hbm.xml文件
(1)创建User对象
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class User { private Integer id; private String userName; private String password; private String email; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "User{" + "id=" + id + ", userName='" + userName + '\'' + ", password='" + password + '\'' + ", email='" + email + '\'' + '}'; } }
(2)创建User.hbm.xml文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.hibernate.entity.User" table="user"> <id name="id" type="java.lang.Integer"> <column name="id" /> <generator class="assigned" /> </id> <property name="userName" type="java.lang.String"> <column name="USER_NAME"></column> </property> <property name="password" type="java.lang.String"> <column name="PASSWORD"></column> </property> <property name="email" type="java.lang.String"> <column name="EMAIL"></column> </property> </class> </hibernate-mapping>
5、创建测试文件,进行测试
(1)创建SessionFactory,创建SessionFactory有两种方式
第一种:
Configuration configuration = new Configuration().configure("hibernate.cfg.xml"); sessionFactory = configuration.buildSessionFactory();
第二种方式:
Configuration configuration = new Configuration().configure("hibernate.cfg.xml"); StandardServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().configure().build(); sessionFactory=configuration.buildSessionFactory(serviceRegistry);
(2)创建session
(3)开启事物
(4)执行对应的操作,保存修改
(5)提交事务
(6)关闭session
(7)关闭sessionFactory
整体代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class HibernateTest { SessionFactory sessionFactory; Session session; Transaction transaction; @Before public void init(){ Configuration configuration = new Configuration().configure("hibernate.cfg.xml"); // sessionFactory = cfg.buildSessionFactory(); StandardServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().configure().build(); sessionFactory=configuration.buildSessionFactory(serviceRegistry); //第一步:创建SessionFactory //第二步:创建session session=sessionFactory.openSession(); //第三步:开启事务 transaction=session.beginTransaction(); } @Test public void saveUser(){ User user=new User(); user.setId(1); user.setUserName("James"); user.setPassword("123456"); user.setEmail("James@163.com"); // 第四部:执行保存操作 session.save(user); } @After public void after(){ //第五步:提交事务 transaction.commit(); //第六步:关闭session session.close(); //第七部:关闭SessionFactory sessionFactory.close(); } }