Hibernate入门

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 引入Hibernate相关jar配置文件 hibernate.cfg.xml和hibernate.properties其中之一hibernate.cfg.xml配置文件 com.

引入Hibernate相关jar

配置文件 hibernate.cfg.xml和hibernate.properties其中之一

hibernate.cfg.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

    <!--配置数据库的驱动程序,Hibernate在连接数据库时,需要用到数据库的驱动程序-->   
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver </property>   
    <!--设置数据库的连接url:jdbc:mysql://localhost/hibernate,其中localhost表示mysql服务器名称,此处为本机,    hibernate是数据库名-->    
        <property name="hibernate.connection.url">jdbc:mysql://localhost/test </property>   
    <!--连接数据库是用户名-->   
        <property name="hibernate.connection.username">root</property>   
    <!--连接数据库是密码-->   
        <property name="hibernate.connection.password">root</property>          
    <!--数据库连接池的大小-->   
        <property name="hibernate.connection.pool.size">20</property>          
    <!--是否在后台显示Hibernate用到的SQL语句,开发时设置为true,便于差错,程序运行时可以在Eclipse的控制台显示Hibernate的执行Sql语句。项目部署后可以设置为false,提高运行效率-->   
        <property name="hibernate.show_sql">true </property>   
        <property name="hibernate.format_sql">true </property>   
        <property name="hibernate.use_sql_comments">true </property>   
    <!--jdbc.fetch_size是指Hibernate每次从数据库中取出并放到JDBC的Statement中的记录条数。Fetch Size设的越大,读数据库的次数越少,速度越快,Fetch Size越小,读数据库的次数越多,速度越慢-->   
        <property name="jdbc.fetch_size">50 </property>   
    <!--jdbc.batch_size是指Hibernate批量插入,删除和更新时每次操作的记录数。Batch Size越大,批量操作的向数据库发送Sql的次数越少,速度就越快,同样耗用内存就越大-->   
        <property name="jdbc.batch_size">400 </property>   
    <!--jdbc.use_scrollable_resultset是否允许Hibernate用JDBC的可滚动的结果集。对分页的结果集。对分页时的设置非常有帮助-->   
        <property name="jdbc.use_scrollable_resultset">false </property>   
    <!--connection.useUnicode连接数据库时是否使用Unicode编码-->   
        <property name="Connection.useUnicode">true </property>   
    <!--connection.characterEncoding连接数据库时数据的传输字符集编码方式,最好设置为gbk,用gb2312有的字符不全-->   
        <property name="connection.characterEncoding">utf8</property>        
    <!--hibernate.dialect 只是Hibernate使用的数据库方言,就是要用Hibernate连接那种类型的数据库服务器。-->   
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect </property>   
    <!--指定映射文件为“hibernate/ch1/UserInfo.hbm.xml”-->          
        <mapping resource="com/cor/entity/User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>
<mapping resource="com/cor/entity/User.hbm.xml"/> 
要放在所有porperty后面

注意

mapper必须放在所有property 下面

hibernate对象状态

1、瞬时状态 数据库中没有
2、持久状态—save之后
3、游离(脱管状态)状态—-commit之后

HQL

面向对象查询语言,把表变成对象,把字段变成属性
HQL中的参数通过query接口注入,并且有query接口负责查询

hbm.xml

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

    <hibernate-mapping package="com.coracle.entity"> 

        <class name="User">

            <id name="id">
            <generator class="native"></generator>
            </id>

            <property name="name"></property>
            <property name="birthday"></property>
        </class>


     </hibernate-mapping>

获取sessionFactory 和Session

public static Session getSession() {
        Session s = null;
        Transaction t = null;
        Configuration cfg = new Configuration().configure();

        SessionFactory sf = cfg.buildSessionFactory();

        s = sf.openSession();
        return s;
    }

查询demo HQL

public static void main(String[] args) {
    Session session = HibernateUtils.getSession();
    String sql = "from User where name = :name and age=:age";

    Query query = session.createQuery(sql);
    query.setMaxResults(1);
    query.setString("name", "test");
    query.setString("age", "12");
    Object o= query.uniqueResult();
    System.out.println(o);
    List<User> li = query.list();
    for (User u : li) {
        System.out.println(u.getName());
    }
    session.close();
}

##Criteria
public static void main(String[] args) {
    Session s = HibernateUtils.getSession();
    Criteria cri = s.createCriteria(User.class);
    cri.add(Restrictions.eq("age", "12"));
    cri.add(Restrictions.eq("name", "test"));
    List<User> us=cri.list();
    for(User u : us){
        System.out.println(u.getAge());
    }
}

分页(HQL相同)
public static void main(String[] args) {
    Session s = HibernateUtils.getSession();
    Criteria cri = s.createCriteria(User.class);
    cri.setFirstResult(0);
    cri.setMaxResults(3);
    List<User> us=cri.list();
    for(User u : us){
        System.out.println(u.getAge());
    }
}

“`

批量插入

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
SQL 缓存 Java
Hibernate - 检索策略入门与详解
Hibernate - 检索策略入门与详解
31 0
|
5月前
|
SQL Java 数据库连接
Hibernate - 基础入门详解
Hibernate - 基础入门详解
48 1
|
SQL Java 数据库连接
hibernate入门学习笔记
hibernate入门学习笔记
64 0
|
SQL XML Java
Mybatis01入门+使用和配置+面试题mybatis与hibernate的区别+ssm与ssh2开发对比
Mybatis01入门+使用和配置+面试题mybatis与hibernate的区别+ssm与ssh2开发对比
Mybatis01入门+使用和配置+面试题mybatis与hibernate的区别+ssm与ssh2开发对比
|
存储 SQL Java
Hibernate入门实例
Hibernate是一个基于jdbc的开源的持久化框架,是一个优秀的ORM实现,它很大程度的简化了dao层编码工作。Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
Hibernate入门实例
|
SQL 设计模式 缓存
【框架】[Hibernate]构架知识点详解入门与测试实例
【框架】[Hibernate]构架知识点详解入门与测试实例
101 0
【框架】[Hibernate]构架知识点详解入门与测试实例
|
Oracle Java 关系型数据库
Hibernate入门这一篇就够了(四)
Hibernate入门这一篇就够了
132 0
Hibernate入门这一篇就够了(四)
|
SQL Java 数据库连接
Hibernate入门这一篇就够了(三)
Hibernate入门这一篇就够了
103 0
Hibernate入门这一篇就够了(三)
|
XML Java 数据库连接
Hibernate入门这一篇就够了(二)
Hibernate入门这一篇就够了
134 0
Hibernate入门这一篇就够了(二)
|
SQL XML 前端开发
Hibernate入门这一篇就够了(一)
Hibernate入门这一篇就够了
158 0
Hibernate入门这一篇就够了(一)