Hibernate - Quick Start

参考:Hibernate 5.0 http://docs.jboss.org/hibernate/orm/5.0/quickstart/html/

hibernate.cfg.xml

<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<!--
  ~ Hibernate, Relational Persistence for Idiomatic Java
  ~
  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<!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>

        <!-- 数据库连接配置 -->
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:xe</property>
        <property name="connection.username">myname</property>
        <property name="connection.password">mypassword</property>

        <!-- 内置的数据库连接池配置(不推荐使用内置的数据库连接池) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL方言配置 -->
        <property name="dialect">org.hibernate.dialect.OracleDialect</property>

        <!-- 不设二级缓存 -->
        <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>

        <!-- 打印SQL到标准输出 -->
        <property name="show_sql">true</property>

        <!-- create:启动时删除旧表重建新表 -->     <!-- create-drop:同上,不过关闭Hibernate时会删除表 -->     <!-- update:启动时验证表,若不一致会更新表 -->     <!-- validate:启动时验证表,若不一致抛异常,不会更新表(推荐) -->
        <property name="hbm2ddl.auto">create</property>

     <!-- 使用XML映射实体到数据库 -->
        <mapping resource="org/hibernate/tutorial/hbm/Event.hbm.xml"/>

     <!-- 使用注解映射实体到数据库 -->        <mapping class="org.hibernate.tutorial.annotations.Event"/>

    </session-factory>

</hibernate-configuration>

Java实体类

1. 使用标准JavaBean中对属性的传统命名方式,并有相应的getter和setter方法,属性私有

2. 无参的构造方法

Classname.hbm.xml

<?xml version="1.0"?>

<!--
  ~ Hibernate, Relational Persistence for Idiomatic Java
  ~
  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<!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.elenore.entity.hbm">

    <class name="Event" table="EVENTS">
        <id name="id" column="EVENT_ID">
            <generator class="increment"/>
        </id>
        <property name="date" type="timestamp" column="EVENT_DATE"/>     <!-- 不写type,则默认和声明的属性类型的默认匹配类型一样 -->     <!-- 不写column,则默认和name值一样 -->     <!-- 考虑到启动性能,应该显示说明属性的匹配类型(因为hibernate的自动匹配是通过反射机制) -->
        <property name="title"/>
    </class>

</hibernate-mapping>

使用注解映射

@Entity
@Table( name = "EVENTS" )
public class Event {
    private Long id;

    private String title;
    private Date date;

    public Event() {
        // this form used by Hibernate
    }

    public Event(String title, Date date) {
        // for application use, to create new events
        this.title = title;
        this.date = date;
    }

    @Id
    @GeneratedValue(generator="increment")
    @GenericGenerator(name="increment", strategy = "increment")
    public Long getId() {
        return id;
    }

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

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "EVENT_DATE")
    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

     public String getTitle() {
        return title;
    }

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

Hibernate启动

protected void setUp() throws Exception {
        // SessionFactory在一个应用中只会被创建一次
        final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
             .configure() // 从hibernate.cfg.xml解析配置
                .build();
        try {
            sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory();
        }
        catch (Exception e) {
            // registry会被SessionFactory自动销毁
            // 但是如果在创建SessionFactory时有异常,则需要手动销毁
            StandardServiceRegistryBuilder.destroy( registry );
        }
}

Hibernate使用

// 插入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();

// 查询
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();
时间: 2024-11-03 21:58:20

Hibernate - Quick Start的相关文章

使用maven实现struts2 spring hibernate 的整合

今天用maven实现了struts2 , spring, hibernate 的整合. 这中间出现了不少的错误.大都是因为配置文件出错引起的.在这里整合一下: 注:这里我们实现一个登陆功能.用户从jsp页面输入用户名和密码,服务器校验其正确性后,根据正确与否跳转到不同的页面. 一,整合之后的项目结构: 可以看到,与以前的“动态网站”项目的结构不同.Maven项目中所有的框架配置文件都放在了“resources”目录下面.在“resources”中的文件最终会被copy到项目的 WEB-INF/c

搭建spring mvc + maven + hibernate

一.项目pom.xml文件引入的Jar包配置,可以通过maven库查到相关配置maven库访问地址:http://maven.oschina.net/index.html#nexus-search;quick~ 二.配置文件 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc

Hibernate和MyBatis的简单入门

Hibernate Hibernate是开发者社区比较流行的持久化框架 它不仅提供了基本的对象关系映射,还提供了作为ORM工具所应有的复杂功能 比如:缓存.延迟加载.预先抓取和分布式缓存 使用Hibernate的主要接口是org.hibernate.Session Session接口提供了基本的数据访问功能 如保存.更新.删除以及从数据库中加载对象的功能 获取Hibernaate Session对象的标准方式是借助于Hibernate的Session Factory接口的实现类 除了一些其它的任

Hibernate - HHH000352: Unable to release batch statement

这是hibernate的一个bug,具体看https://hibernate.atlassian.net/browse/HHH-11732?attachmentViewMode=list When using stateless session with jdbc batch size we get an HHH000352: Unable to release batch statement.. error in session.close() after rollback: Code:Con

Hibernate简述及入门实例

一.Hibernate简述 总的概括,Hibernate是一个ORM的轻量级持久层框架,解决了对象和关系数据库中表的不匹配问题(阻抗不匹配)以及拥有开发代码不用去继承hibernate类或接口的优势(无侵入性).hibernate框架实现使得开发人员可以避免反复地编写javajdbc部分代码,应用面向对象的思维操作关系型数据库. 二.使用myeclipse创建hibernate实例两种方法(以hibernate3.5.2及mysql为例) a)手动编写hibernate.cfg.xml及*.hb

对象序列化和反序列--Hibernate的查询和新增极其相似

Hibernate几个关键字持久化,ORM(关系对象映射)(数据库中关系称作是一张表) 应用在项目中,刘一从写的查询代码,每次都挂掉,想要弄出测试数据,自己想着把查询出来的复杂数据弄到文件里自己要是去造那些复杂数据很麻烦public class Object1 { public static void main(String args[]){ HashMap<String, Object> obj=new HashMap<String,Object>(); obj.put(&quo

Hibernate的七种映射关系之七种关联映射(二)

继续上篇博客 七.Hibernate双向一对多关联映射:让多的一端来维护关系. 主要是解决一对多单向关联的缺陷,而不是需求驱动的. 1.在Student.java实体类里添加Classes引用.private Classes classes; 2.Student.hbm.xml里添加many-to-one标签:<many-to-one name="classes" column="classesid"/>.Classes.hbm.xml在例子(六)里的那

Hibernate的七种映射关系之七种关联映射(一)

关联映射就是将关联关系映射到数据库里,在对象模型中就是一个或多个引用. 一.Hibernate多对一关联映射:就是在"多"的一端加外键,指向"一"的一端. 比如多个学生对应一个班级,多个用户对应一个级别等等,都是多对一关系. 1."多"端实体加入引用"一"端实体的变量及getter,setter方法. 比如说多个学生对应一个班级,在学生实体类加入:private Grade grade; 2."多"端配置文

mybatis与hibernate的区别

本文转载自:http://blog.csdn.net/wangpeng047/article/details/17038659 以前没怎么用过mybatis,只知道与hibernate一样是个orm数据库框架.随着使用熟练度的增加,发现它与hibernate区别是非常大的,结合至今为止的经验,总结出以下几点: 1. hibernate是全自动,而mybatis是半自动. hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql