由于Hibernate 4版本混乱,Hibernate 3有些过时,Hibernate 5的开发文档尚不完善,所以构建一份简单的Hibernate 5的入门指南

注:案例参考Hibernate 官方参考文档,使用Hibernate 5.3.7 、Java 8 -191、MySQL 8.0. 13进行修改测试

本案例使用hbm.xml映射文件创建简单的Hibernate测试项目

  1. 首先创建hibernate.cfg.xml配置文件并做简单的配置。

    <hibernate-configuration>
       <session-factory>
           <!-- Database connection settings -->
           <property name="connection.url">jdbc:mysql://localhost:3306/databaseName?useSSL=false&amp;serverTimezone=UTC&amp;verifyServerCertifate=false&amp;allowPublicKeyRetrieval=true</property>
           <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
           <property name="connection.username">root</property>
           <property name="connection.password">passwd</property>

           <!-- SQL dialect -->
           <property name="dialect">org.hibernate.dialect.MySQL8Dialect</property>

           <!-- Echo all executed SQL to stdout -->
           <property name="show_sql">true</property>
           <property name="format_sql">true</property>

           <!-- Drop and re-create the database schema on startup -->
           <!--先定义为create使其在数据库生成对应的表,之后可以修改为update-->
           <property name="hbm2ddl.auto">create</property>

           <!-- JDBC connection pool (use the built-in) -->
           <property name="connection.pool_size">1</property>

           <!-- Disable the second-level cache -->
           <property name="cache.provider_class">org.hibernate.cache.internal.NoCachingRegionFactory</property>
       </session-factory>
    </hibernate-configuration>
  2. 创建实体Java类

    import java.util.Date;

    public class Event {
       private Long id;
       private String title;
       private Date date;

       public Event() {
      }

       public Event(String title, Date date) {
           this.title = title;
           this.date = date;
      }

       public Long getId() {
           return id;
      }

       public void setId(Long id) {
           this.id = id;
      }

       public String getTitle() {
           return title;
      }

       public void setTitle(String title) {
           this.title = title;
      }

       public Date getDate() {
           return date;
      }

       public void setDate(Date date) {
           this.date = date;
      }
    }
  3. 创建Event.hbm.xml映射文件

    <hibernate-mapping package="类路径">
       <class name="Event" table="EVENTS">
           <!--定义id映射元素主键自增-->
           <id name="id" column="EVENTS_ID">
               <generator class="increment"/>
           </id>
           <!--定义属性映射元素-->
           <property name="date" column="EVENT_DATE" type="timestamp"/>
           <property name="title"/>
       </class>
    </hibernate-mapping>
  4. 向hibernate.cfg.xml文件中添加映射信息

    <mapping resource="类路径/Event.hbm.xml"/>
  5. JUnit测试测试程序

    import java.util.Date;
    import java.util.List;

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.boot.MetadataSources;
    import org.hibernate.boot.registry.StandardServiceRegistry;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;

    import junit.framework.TestCase;

    public class NativeApiIllustrationTest extends TestCase {
       private SessionFactory sessionFactory;
       protected void setUp() throws Exception {
           // A SessionFactory is set up once for an application!
           final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
                  .configure() // configures settings from hibernate.cfg.xml
                  .build();
           try {
               sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory();
          }
           catch (Exception e) {
               // The registry would be destroyed by the SessionFactory, but we had trouble building the SessionFactory
               // so destroy it manually.
               StandardServiceRegistryBuilder.destroy( registry );
          }
      }

       @Override
       protected void tearDown() throws Exception {
           if ( sessionFactory != null ) {
               sessionFactory.close();
          }
      }

       @SuppressWarnings("unchecked")
       public void testBasicUsage() {
           // create a couple of events...
           Session session = sessionFactory.openSession();
           session.beginTransaction();
           session.save( new Event( "Our very first event!", new Date() ) );
           session.save( new Event( "A follow up event", new Date() ) );
           session.getTransaction().commit();
           session.close();

           // now lets pull events from the database and list them
           session = sessionFactory.openSession();
           session.beginTransaction();
           List result = session.createQuery( "from Event" ).list();
           for ( Event event : (List<Event>) result ) {
               System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() );       }        session.getTransaction().commit();        session.close();   }}
  6. 运行测试

Hibernate 5 入门指南-基于映射文件的更多相关文章

  1. Hibernate 5 入门指南-基于Envers

    首先创建\META-INF\persistence.xml配置文件并做简单的配置 <persistence xmlns="http://java.sun.com/xml/ns/pers ...

  2. Hibernate 5 入门指南-基于JPA

    首先创建\META-INF\persistence.xml配置文件并做简单的配置 <persistence xmlns="http://java.sun.com/xml/ns/pers ...

  3. Hibernate 5 入门指南-基于类注解

    首先创建hibernate.cfg.xml配置文件并做简单的配置 <hibernate-configuration>    <session-factory>        & ...

  4. Hibernate入门3.配置映射文件深入

    Hibernate入门3.配置映射文件深入 2013.11.27 前言: 之前的两节是在Java项目中如何使用hibernate,并且通过一个简单地项目实践,期间有很多的错误,一般都是因为配置包的问题 ...

  5. java struts2入门学习--基于xml文件的声明式验证

    一.知识点总结 后台验证有两种实现方式: 1 手工验证顺序:validateXxx(针对Action中某个业务方法验证)--> validate(针对Action中所有的业务方法验证) 2 声明 ...

  6. Mybatis框架基于映射文件和配置文件的方式,实现增删改查,可以打印日志信息

    首先在lib下导入: 与打印日志信息有关的架包 log4j-1.2.16.jar mybatis架包:mybatis-3.1.1.jar 连接数据库的架包:mysql-connector-java-5 ...

  7. Spring框架入门之基于xml文件配置bean详解

    关于Spring中基于xml文件配置bean的详细总结(spring 4.1.0) 一.Spring中的依赖注入方式介绍 依赖注入有三种方式 属性注入 构造方法注入 工厂方法注入(很少使用,不推荐,本 ...

  8. Hibernate *.hbm.xml对象关系映射文件详解

    在hibernate中表与pojo对象是一一对应的,通过hbm文件将数据库表与实体关联起来,本文将对hbm文件进行介绍. pojo对象:提供了公共的无参构造方法 ,通过反射产生对象.          ...

  9. 2018.11.1 Hibernate中的Mapper关系映射文件

    Customer.hbm.xml 基本的参数都在里面了 <?xml version="1.0" encoding="UTF-8"?> <!DO ...

随机推荐

  1. Maven json-lib依赖下载不下来解决方案

    今天Maven添加依赖时候发现json lib这个包引入之后,死活出不来JSONObject这个类,打开Maven Project视图,发现json-lib这个包没下下来,以前也遇到过类似问题,都是网 ...

  2. Java设计模式学习记录-模板方法模式

    前言 模板方法模式,定义一个操作中算法的骨架,而将一些步骤延迟到子类中.使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤. 模板方法模式 概念介绍 模板方法模式,其实是很好理解的,具体 ...

  3. java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.SpecialProvider.<init>()

    Caused by: org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis ...

  4. JuiceSSH使用教程: 玩转Linux与Windows

    JuiceSSH使用教程:  0.0.环境准备 1.PowerShellServer V6(一般安装这一个就够了,如果不行就考虑把后面两个也安装上) 2.PowerShell-6.0.1(一般电脑已经 ...

  5. [转]使用Git Submodule管理子模块

    本文转自:https://blog.csdn.net/qq_37788558/article/details/78668345 实例代码: 父项目:https://github.com/jjz/pod ...

  6. 对象引用对于非静态的字段、方法、属性Program.Print()是必需的

    在学习重载是以下代码报错: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  7. 我的IdentityServer目录

    概念部分 理解oauth协议 理解什么是claim 学习Identity Server 4的预备知识 Open ID Connect(OIDC)在 ASP.NET Core中的应用 操作部分 入门: ...

  8. Linux配置2个或多个Tomcat同时运行

    一.问题说明今天操作Linux部署项目的时候,公司领导要求,只给一个服务器,但是有2个项目要部署,而且需要独立分开运行. 二.解决方法Linux配置两个或多个Tomcat,一个Tomcat对应部署一个 ...

  9. JQuery官方学习资料(译):$( document ).ready()

         一个页面直到document是”ready“才能被安全的操作,Jquery为你检查这种状态.代码包含在$( document ).ready()的内部将会仅仅运行一次在页面Document ...

  10. ABP框架 sql语句(转载)

    ABP.Core实现SQL语句仓储,支持EF.Core兼容的数据库  来源:https://blog.csdn.net/qq_28699537/article/details/80522680?tds ...