发表于: 2017-09-21 20:19:07

0 718


今天完成的事情:学习Hibernate,公司用的DAL

Hibernate简介

Hibernate 是由 Gavin King 于 2001 年创建的开放源代码的对象关系框架。它强大且高效的构建具有关系对象持久性和查询服务的 Java 应用程序。Hibernate 将 Java 类映射到数据库表中,从 Java 数据类型中映射到 SQL 数据类型中,并把开发人员从 95% 的公共数据持续性编程工作中解放出来。Hibernate 是传统 Java 对象和数据库服务器之间的桥梁,用来处理基于 O/R 映射机制和模式的那些对象。

image


Hibernate 优势

Hibernate 使用 XML 文件来处理映射 Java 类别到数据库表格中,并且不用编写任何代码。为在数据库中直接储存和检索 Java 对象提供简单的 APIs。如果在数据库中或任何其它表格中出现变化,那么仅需要改变 XML 文件属性。抽象不熟悉的 SQL 类型,并为我们提供工作中所熟悉的 Java 对象。Hibernate 不需要应用程序服务器来操作。操控你数据库中对象复杂的关联。最小化与访问数据库的智能提取策略。提供简单的数据询问。


支持的数据库

Hibernate 支持几乎所有的主要 RDBMS。以下是一些由 Hibernate 所支持的数据库引擎。

HSQL Database Engine  DB2/NT  MySQL  PostgreSQL FrontBase  Oracle

Microsoft SQL Server Database  Sybase SQL Server  Informix Dynamic Server


Hibernate架构

下面是一个详细的 Hibernate 应用程序体系结构视图以及一些重要的类。


代码实战

pom文件中添加依赖

<dependency>

    <groupId>org.hibernate</groupId>

    <artifactId>hibernate-core</artifactId>

    <version>5.2.10.Final</version>

</dependency>


创建Hibernate配置文件

配置文件主要是配置数据库的一些信息,包括用户名和密码等。它可以是properties文件,也可以是xml文件,比较常用的是xml文件。这里我用的是xml文件,默认名为hibernate.cfg.xml,放在resources文件夹下。

<!--?xml version='1.0' encoding='utf-8'?-->

 

<hibernate-configuration>

    <session-factory>

 

        <!-- 指定连接数据库所用的驱动 -->

        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>

        <!-- 指定连接数据库的url,hibernate连接的数据库名 -->

        <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>

        <!-- 指定连接数据库的用户名 -->

        <property name="hibernate.connection.username">root</property>

        <!-- 数据库的登陆密码 -->

        <property name="hibernate.connection.password">199498xy</property>

        <!-- 指定连接数据库的编码 -->

        <property name="connection.characterEncoding">utf8</property>

        <!-- 指定数据库方言 -->

        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- 显示Hibernate持久化操作所生成的SQL -->

        <property name="show_sql">true</property>

        <!-- 将SQL脚本进行格式化后再输出 -->

        <property name="format_sql">true</property>

        <!-- 指定自动生成数据表的策略 -->

        <property name="hbm2ddl.auto">update</property>

 

        <!-- 罗列所有的映射文件 -->

        <mapping resource="mapping/User.hbm.xml">

    </mapping></session-factory>

</hibernate-configuration>


创建映射文件

映射文件是根据持久化类来写的,还要在配置文件hibernate.cfg.xml中声明。它就相当于持久化类和数据库中表的一座桥梁,Hibernate就是通过它找到数据库的对应字段,从而进行增删查改操作的

User.hbm.xml

<!--?xml version='1.0' encoding='utf-8'?-->

<hibernate-mapping>

    <class name="com.doubecharli.bean.User" schema="hibernate" table="user">

        <id column="id" name="id">

        <property column="username" name="username">

        <property column="password" name="password">

    </property></property></id></class>

</hibernate-mapping>


创建实体类

public class User {

    private String id;

    private String username;

    private int 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 int getPassword() {

        return password;

    }

 

    public void setPassword(int password) {

        this.password = password;

    }

}


创建测试类

public class HibernateTest {

 

    public static void main(String[] args) {

        // 加载Hibernate默认配置文件

        Configuration configuration = new Configuration().configure();

        // 用Configuration创建SessionFactory

        SessionFactory factory = configuration.buildSessionFactory();

        // 创建Session

        Session session = factory.openSession();

        // 开启事务

        Transaction transaction = session.beginTransaction();

        // 实例化持久化类

        User user = new User();

        user.setId("1");

        user.setUsername("doubecharli");

        user.setPassword(123456);

        // 保存

        session.save(user);

        // 提交事务

        transaction.commit();

        // 关闭Session,释放资源

        session.close();

        factory.close();

    }

}

明天计划的事情:改方案

遇到的问题:如下

和PM沟通了几点问题,有的待确定:

       1.债权具体的匹配规则:

       2.前台交易明细页的备注是写死的一句话,不必在后端存储。

       3.销量统计中,人数统计的规则是:当天计数,隔天计数,总数除重(一天是否可购买多次待定)。

       4.一个产品能够续投的条件(待PM确定)。

       5.前台投资详情中的投资状态命名与后台投资记录中的投资状态命名不一致(待PM确定)。

       6.前台投资详情中,未分配收益、已分配收益与投资状态的关系(待PM确定)。

       7.模块管理

收获:确认需求


返回列表 返回列表
评论

    分享到