self-confidence,the source of all the power

导航

hibernate学习之一 框架配置

hibernate 框架

  1、hibernate框架应用在javaee三层结构中的dao层框架

  2、好处就是不需要写复杂jdbc代码,不需要sql语句实现

  3、是开源的轻量级框架

  hibernate使用orm思想对数据库进行crud操作, orm - object relational mapping, 对象关系映射,让实体类和数据库表一一对应,实体类属性与表里的字段一一对应。

对数据库表进行操作,不需要对数据库操作,直接对实体类进行操作即可完成。它与jdbc的对比关系如下图

 

MAVEN导包配置

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.2.10.Final</version>
</dependency>

搭建hibernate步骤

  第一步,创建实体类

public class LoginInfo {
        //对应数据库的主键,值唯一
        private String id;
        private String username;
        private String password;

        public String getId() {
                return id;
        }

        public void setId(String 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;
        }
}

  注意:如果实体类对应的表不存在,hibernate可以自动创建数据表

  第二步 配置数据表与实体类的映射关系

  新建一个配置文件loginInfo.hbm.xml. 文件名字与位置没有固定,建议放在实体类所在包,名字样式为xxx.hbm.xml.在开始配置前,首先引入约束,约束文件为   http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd   点击下载MappingDTD文件

<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

   本例子中logininfo.hbm.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  :表名-->
        <class name="com.blueto.hibernate.LoginInfo" table="t_logininfo">
                <id name="id" column="id">
                        <!--主键 自动增长-->
                        <!--<generator class="native"></generator>-->
                        <!--uuid方式生成主键-->
                        <generator class="uuid"></generator>
                </id>
                <!--name 实体类属性, column 表字段名-->
                <property name="username"  column="username"></property>
                <property name="password" column="password"></property>
        </class>

</hibernate-mapping>

  第三步 创建hibernate的核心配置文件

  与mapping文件不一样,该配置文件名与位置必须固定,文件名只能为hibernate.cfg.xml, 并且只能放在目录src下面

  配置分三小步骤

    1)首先引入约束 http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd, 点击下载DTD

    2)配置数据库信息

    3)配置hibernate信息

    4)把映射配置文件(上一节的xxx.hbm.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>
                <!--1) 配置数据库信息-->
                <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
                <property name="hibernate.connection.url">jdbc:mysql:///t_logininfo</property>
                <property name="hibernate.connection.username">root</property>
                <property name="hibernate.connection.password">123</property>
                <!-- 2)   配置hibernate信息,可选-->
                <!--输出底层sql语句-->
                <property name="hibernate.show_sql">true</property>
                <!--输出sql格式-->
                <property name="hibernate.format_sql">true</property>
                <!--如果没有表,则创建,有则更新-->
                <property name="hibernate.hbm2ddl.auto">update</property>

                <!--配置数据库方言-->
                <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
                <!--  3)  把映射配置文件放到核心配置文件中-->
                <mapping resource="com/blueto/hibernate/logininfo.hbm.xml"></mapping>
        </session-factory>
</hibernate-configuration>

  如果从没有接触过hibernate, 那怎么知道里面怎么配置啊?如果记不住配置内容,可以打开hibernate.properties文件查看里面的配置属性,找到对应的数据库按照properties里定义配置就好了。方便理解,上一张它们间的关系图

   我使用的是mysql数据库,其他数据库配置同样可以参考hibernate.properties文件配置(点击下载hibernate.properties)

  第四步 数据库的CRUD操作

public class HiberDemo {
        @Test
        public void testAdd(){
                // step 1 : 加载hibernate核心配置文件
                Configuration cfg = new Configuration();
                cfg.configure();
                //setp 2  : 创建SessionFactory
                SessionFactory sessionFactory = cfg.buildSessionFactory();
                //step 3 :  创建session对象
                Session session = sessionFactory.openSession();
                //step 4 开启事务
                Transaction tx = session.beginTransaction();
                //step 5 crud
                LoginInfo loginInfo = new LoginInfo();
                loginInfo.setUsername("new name");
                //写入数据表中,如果表不存在,则创建表,
                // 前提是要在核心配置文件中配置 : <property name="hibernate.hbm2ddl.auto">update</property>
                session.save(loginInfo);
                //step 6 提交事务
                tx.commit();
                //step 7 关闭资源
                session.close();
                sessionFactory.close();
        }
}

 

posted on 2017-07-30 16:36  漩涡鸣人  阅读(244)  评论(0编辑  收藏  举报