第一个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 文件中的列在数据表中不存在,则抛出异常


<?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>
View Code

 4、创建对应的实体类以及实体类的hbm.xml文件

 (1)创建User对象

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 + '\'' +
                '}';
    }
}
View Code

(2)创建User.hbm.xml文件

<?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>
View Code

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

整体代码如下:

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();
    }



}
View Code

 

posted @ 2018-09-21 15:46  夜凌云~  阅读(129)  评论(0编辑  收藏  举报