文档章节

Hibernate学习笔记(一)

第五郎
 第五郎
发布于 2014/06/17 16:17
字数 630
阅读 55
收藏 0
点赞 0
评论 0

使用maven执行如下命令,创建项目骨架

mvn archetype:generate -DgroupId=org.hibernate.tutorials -DartifactId=hibernate-tutorial 
-DarchetypeArtifactId=maven-archetype-webapp

项目结构如下

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
    http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.hibernate.tutorials</groupId>
    <artifactId>hibernate-tutorial</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>First Hibernate Tutorial</name>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>3.6.9.Final</version>
        </dependency>
        <!-- for JPA, use hibernate-entitymanager instead of hibernate-core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>3.6.9.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-ehcache</artifactId>
            <version>3.6.9.Final</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.7</version>
        </dependency>
        <dependency>
            <groupId>javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.9.0.GA</version>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.3-1101-jdbc41</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

实体类

Event.java

package org.hibernate.domain;
import java.util.Date;
/**
 * Created by yaoli on 2014/6/17 0017.
 */
public class Event {
    private String id;
    private String title;
    private Date date;
    public Event() {
    }
    public String getId() {
        return id;
    }
    public void setId(String 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;
    }
}

实体类映射文件

Event.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.tutorial.domain">
    <class name="org.hibernate.domain.Event" table="EVENTS">
        <id name="id" column="EVENT_ID">
            <generator class="uuid"/>
        </id>
        <property name="date" type="timestamp" column="EVENT_DATE"/>
        <property name="title"/>
    </class>
</hibernate-mapping>

Hibernate配置文件

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>
        <property name="connection.driver_class">org.postgresql.Driver</property>
        <property name="connection.url">jdbc:postgresql://localhost:5432/hibernate?characterEncoding=UTF-8</property>
        <property name="connection.username">postgres</property>
        <property name="connection.password">admin</property>
        <property name="connection.pool_size">1</property>
        <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <property name="current_session_context_class">thread</property>
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">update</property>
        <mapping resource="org/hibernate/tutorial/domain/Event.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

SessionFactory工具类

HibernateUtil.java

package org.hibernate.tutorial.util;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
 * Created by yaoli on 2014/6/17 0017.
 */
public class HibernateUtil {
    private static final SessionFactory sessionFactory= buildSessionFactory();
    private static SessionFactory buildSessionFactory(){
        try {
            return new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex){
            System.err.println("Initial SessionFactory creation failed "+ ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
    public static SessionFactory getSessionFactory(){
        return sessionFactory;
    }
}

主类

EventManager.java

package org.hibernate.tutorial;
import org.hibernate.Session;
import org.hibernate.domain.Event;
import org.hibernate.tutorial.util.HibernateUtil;
import java.util.Date;
import java.util.List;
public class EventManager {
    public static void main(String[] args){
        EventManager mgr = new EventManager();
        if (args[0].equals("store")){
            mgr.createAndStoreEvent("My Event", new Date());
        } else if (args[0].equals("list")){
            List events = mgr.listEvent();
            for (int i = 0; i < events.size(); i++){
                Event theEvent = (Event) events.get(i);
                System.out.println("Event: "+theEvent.getTitle()+"Time:"+theEvent.getDate());
            }
        }
        HibernateUtil.getSessionFactory().close();
    }
    private void createAndStoreEvent(String title, Date theDate){
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        Event theEvent = new Event();
        theEvent.setTitle(title);
        theEvent.setDate(theDate);
        session.save(theEvent);
        session.getTransaction().commit();
    }
    private List listEvent(){
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        List result = session.createQuery("from Event ").list();
        session.getTransaction().commit();
        return result;
    }
}

执行如下命令执行代码

mvn exec:java -Dexec.mainClass="org.hibernate.tutorial.EventManager" -Dexec.args="list"


© 著作权归作者所有

共有 人打赏支持
第五郎
粉丝 9
博文 51
码字总数 28473
作品 0
南京
程序员
MyBatis学习笔记

之前一直使用Hibernate做DAO持久层开发,开发效率确实是相对于传统JDBC要高出不少,但其性能优化是个大问题,在与SpringJDBC配合使用下其实效果还是不错的,但个人认为Hibernate在应付大型应...

zlikun ⋅ 2013/04/02 ⋅ 0

Hibernater学习笔记(四)

今天学习了hibernate的查询,创建的实体类如下 Customer.java(销售员信息) Salesperson.java(客户信息) 1.一对多映射配置 Customer.hbm.xml Salesperson.hbm.xml 配置完两个文件后,需要...

Mr_欢先生 ⋅ 2017/12/10 ⋅ 0

Hibernater学习笔记(六)

一、对象导航查询 之前的客户和联系人的关系是一 对多的关系:一对多 场景:根据客户id查询客户,在查出该客户的所有联系人 二、HQL查询 查询所有客户信息 创建Query对象,写出hql语句 调用q...

Mr_欢先生 ⋅ 01/02 ⋅ 0

《JavaEE基础实用教程》笔记说明

“《JavaEE基础实用教程》笔记”分类中的文章是本人学习《JavaEE基础实用教程》时所做的笔记。 该书作者:郑阿奇 著。ISBN:9787121091360。 这里整理出第3、4、5章的笔记,主要内容是Strut...

JerryPan ⋅ 2016/02/19 ⋅ 1

Hibernater学习笔记(五)

上次学习一对多查询,今天学习多对多查询 场景:用户和角色的关系,一个用户可以是多个角色,一个角色可以有多个用户 pojo类 User.java Role.java 配置文件 User.hbm.xml Role.hbm.xml 创建成...

Mr_欢先生 ⋅ 2017/12/13 ⋅ 0

Hibernater学习笔记(二)

hibernate核心api 1.Configuration 在src下面找名称为hibernate.cfg.xml配置文件,创建对象,把配置文件放到对象里面(加载核心配置文件) 2.SessionFactory(重要) a.使用configuration 对象...

Mr_欢先生 ⋅ 2017/12/07 ⋅ 0

Hibernater学习笔记(一)

1.hibernate概述 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL...

Mr_欢先生 ⋅ 2017/12/05 ⋅ 0

Hibernate 学习资料汇总

1.Hibernate系列——总结篇(http://blog.csdn.net/jiuqiyuliang/article/details/41318751) 2.Hibernate框架简述(http://www.cnblogs.com/eflylab/archive/2007/01/09/615338.html) 3.Hiber......

IT追寻者 ⋅ 2016/08/06 ⋅ 0

Hibernate 学习笔记

Hibernate冬眠 ORM框架(O - R mapping )分别是对象 关系 映射 对象 – 持久化 – 数据库 (关系数据库、对象数据库) 对象 – 关系 Hibernate的优点:(1)使用HIBERNATE.应用层就可以专...

xiahuawuyu ⋅ 2012/03/05 ⋅ 0

Hibernater学习笔记(三)

1.Hibernate缓存 Hibernate一级缓存 hibernate 的一级缓存默认是打开的 hibernate的一级缓存使用范围,是session范围,从session创建到session关闭范围 hibernate的一级缓存中,储存数据必须...

Mr_欢先生 ⋅ 2017/12/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

005. 深入JVM学习—Java堆内存参数调整

1. JVM整体内存调整图解(调优关键) 实际上每一块子内存区域都会存在一部分可变伸缩区域,其基本流程:如果内存空间不足,则在可变的范围之内扩大内存空间,当一段时间之后,内存空间不紧张...

影狼 ⋅ 22分钟前 ⋅ 0

内存障碍: 软件黑客的硬件视图

此文为笔者近日有幸看到的一则关于计算机底层内存障碍的学术论文,并翻译(机译)而来[自认为翻译的还行],若读者想要英文原版的论文话,给我留言,我发给你。 内存障碍: 软件黑客的硬件视图...

Romane ⋅ 55分钟前 ⋅ 0

SpringCloud 微服务 (七) 服务通信 Feign

壹 继续第(六)篇RestTemplate篇 做到现在,本机上已经有注册中心: eureka, 服务:client、order、product 继续在order中实现通信向product服务,使用Feign方式 下面记录学习和遇到的问题 贰 or...

___大侠 ⋅ 今天 ⋅ 0

gitee、github上issue标签方案

目录 [TOC] issue生命周期 st=>start: 开始e=>end: 结束op0=>operation: 新建issueop1=>operation: 评审issueop2=>operation: 任务负责人执行任务cond1=>condition: 是否通过?op3=>o......

lovewinner ⋅ 今天 ⋅ 0

浅谈mysql的索引设计原则以及常见索引的区别

索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针. 数据库索引的设计原则: 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索...

屌丝男神 ⋅ 今天 ⋅ 0

String,StringBuilder,StringBuffer三者的区别

这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。 首先说运行速度,或者说是, 1.执行速度 在这方面运行速度快慢为:StringBuilder(线程不安全,可变) > StringBuffer...

时刻在奔跑 ⋅ 今天 ⋅ 0

java以太坊开发 - web3j使用钱包进行转账

首先载入钱包,然后利用账户凭证操作受控交易Transfer进行转账: Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/Credentials credentials = Wallet......

以太坊教程 ⋅ 今天 ⋅ 0

Oracle全文检索配置与实践

Oracle全文检索配置与实践

微小宝 ⋅ 今天 ⋅ 0

mysql的分区和分表

1,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一...

梦梦阁 ⋅ 今天 ⋅ 0

exception.ZuulException: Forwarding error

错误日志 com.netflix.zuul.exception.ZuulException: Forwarding error Caused by: com.netflix.hystrix.exception.HystrixRuntimeException: xxx timed-out and no fallback available. Ca......

jack_peng ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部