Hibernate学习之旅

Hibernate搭建步骤:

1、下载所需包:antlr-2.7.7.jar,dom4j-1.6.1.jar,hibernate-commons-annotations-4.0.2.Final.jar,hibernate-core-4.2.21.Final.jar,hibernate-jpa-2.0-api-1.0.1.Final.jar,javassist-3.18.1-GA.jar,jboss-logging-3.1.0.GA.jar,jboss-transaction-api_1.1_spec-1.0.1.Final.jar,junit4_4.3.1.jar,mysql-connector-java-5.1.21.jar

2、新建一个Java Project 工程,新建一个lib文件,将jar包粘贴进lib文件,全选jar包,鼠标右键——Build Path——Add to Build Path

3、在src文件下新建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.username">root</property>
            <property name="connection.password">root</property>
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.url">jdbc:mysql:///test</property>
            
            <!-- 配置hibernate的基本信息 -->
            
            <!-- hibernate所使用的数据库方言 -->
            <property name="dialect">
                org.hibernate.dialect.MySQLInnoDBDialect
            </property>
            
            <!-- 执行操作时是否在控制台打印SQL -->
            <property name="show_sql">true</property>
            
            <!-- 是否对SQL进行格式化 -->
            <property name="format_sql">true</property>
            
            <!-- 指定自动生成数据表的策略 -->
            <property name="hbm2ddl.auto">create</property>
            
            <!-- 设置Hibernate的食物隔离级别1,2,4,8 -->
            <property name="connection.isolation">2</property>
            <!-- 删除对象后,使其OID置为null -->
            <!-- <property name="user_identifier_rollback">true</property> -->
            
            <!-- 配置C3P0数据源 -->
            <property name="hibernate.c3p0.max_size">10</property>
            <property name="hibernate.c3p0.min_size">5</property>
            <property name="hibernate.c3p0.acquire_increment">2</property>
            <property name="hibernate.c3p0.timeout">2000</property>
            <property name="hibernate.c3p0.idle_test_period">2000</property>
            <property name="hibernate.c3p0.max_statements">10</property>
            
            <!-- 设定jdbc的statement读取数据的时候每次从数据库中取出的数据条数 -->
            <property name="hibernate.jdbc.fetch_size">100</property>
            <!-- 设定对数据库进行批量删除,批量更新和批量插入的时候批次大小 -->
            <property name="jdbc.batch.size">30</property>
            
            
            <!-- 指定关联的.hbm.xml -->
            <mapping resource="xiaolong/hibernate/news.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>

4、在src文件下建立Package如:xiaolong.hibernate,再在package下新建一个class如:NEWS.java,内容如下:

package xiaolong.hibernate;
import java.sql.Date;
public class NEWS {
    private Integer id;
    private String title;
    private String author;
    private Date date;

public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
    public NEWS(String title, String author, Date date) {
        super();
        this.title = title;
        this.author = author;
        this.date = date;
    }
    public NEWS(){
        
    }
    @Override
    public String toString() {
        return "NEWS [id=" + id + ", title=" + title + ", author="
                + author + ", date=" + date + "]";
    }
}
    5、在xiaolong.hibernate的package下新建news的p配置文件:news.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>
        <class name="xiaolong.hibernate.NEWS" table="NEWS" dynamic-update="true">
            <id name="id" type="java.lang.Integer">
                <column name="ID"></column>
                <!-- 指定主键的生成方式,native使用数据库本地方式 -->
                <generator class="native"></generator>
            </id>
            <property name="title" type="java.lang.String">
                <column name="TITLE"></column>
            </property>
            <property name="author" type="java.lang.String">
                <column name="AUTHOR"></column>
            </property>
            <property name="date" type="java.sql.Date">
                <column name="DATE"></column>
            </property>
        </class>
    </hibernate-mapping>

6、在MySQL里新建数据库NEWS,运行sql语句如下:

CREATE TABLE `NEWS` (
`ID`  int(11) NOT NULL AUTO_INCREMENT ,
`TITLE`  varchar(255) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL ,
`AUTHOR`  varchar(255) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL ,
`DATE`  date NULL DEFAULT NULL ,
PRIMARY KEY (`ID`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=gbk COLLATE=gbk_chinese_ci
AUTO_INCREMENT=3
ROW_FORMAT=COMPACT
;

7、在xiaolong.hibernate下建立class也就是测试类hibernatetest.java,内容如下:

package xiaolong.hibernate;

import java.sql.Connection;
import java.sql.Date;
import java.sql.SQLException;

import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.jdbc.Work;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class Hibernatetest {
//
    private SessionFactory sessionFactory;
    private Session session;
    private Transaction transaction;
    @Before
    public void init(){
        System.out.println("init");
        Configuration configuration = new Configuration().configure();
        ServiceRegistry serviceRegistry =
                new ServiceRegistryBuilder().applySettings(
                        configuration.getProperties()).buildServiceRegistry();
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);
        session = sessionFactory.openSession();
        transaction = session.beginTransaction();
    }
    @After
    public void destroy(){
        System.out.println("destroy");
        transaction.commit();
        session.close();
        sessionFactory.close();
    }
  
    @Test
    public void testGet(){

//1表示ID

NEWS hw = (NEWS)session.get(NEWS.class, 1);
        System.out.println(hw);
    }
    @Test
    public void testUpdate(){
        NEWS hw = (NEWS)session.get(NEWS.class, 1);
        hw.setAuthor("cc");
        //可省略
        session.update(hw);
    }
    @Test
    public void testSave(){
        NEWS hw = new NEWS();
        hw.setAuthor("qq");
        hw.setTitle("QQ");
        hw.setDate(new Date(new java.util.Date().getTime()));
        session.save(hw);
    }
}
    8、说明:以上就是全部步骤,直接选中testSave鼠标右键——RUN AS ——1 JUnit Test

所需jar包的下载地址:http://down.51cto.com/data/2149802

时间: 2024-10-21 03:42:45

Hibernate学习之旅的相关文章

Java EE学习之旅1——HeadFirstJavaEE

因为找到的实习是用Java开发的公司,所以来学习一下Java EE的知识. 首先找来了书<轻量级Java EE企业应用实战>. 啊不得不说学了Java之后直接看这个还是完全不行呢,好多名词看都没有看过啊哈哈. 首先来看看都些啥看不懂的词... 1.JSP.Servlet和JavaBean JSP和Servlet都是用在表现层的东西,而实质上JSP编译成Servlet才运行. 但Servlet开发成本太大,所以用JSP. JavaBean用来通信交换表现层和底层数据. 2.MVC和Struts

hibernate学习系列-----(8)hibernate对集合属性的操作之Collectioon集合篇

度过短暂的周末,又到了周一,继续轻松而愉快的学习,紧承以前的学习,继续了解hibernate对集合的操作学习之旅! 在上一篇中,就已经提前说过,这一篇的内容以及下一篇的内容会有很多相似之处,这里就不再多言了.像往常一样,新建一个StudentCollection.java实体类: package com.joe.entity; import java.util.Collection; public class StudentCollection { private int id; private

基于 Android NDK 的学习之旅----- C调用Java

http://www.cnblogs.com/luxiaofeng54/archive/2011/08/17/2142000.html 基于 Android NDK 的学习之旅----- C调用Java许多成熟的C引擎要移植到Android 平台上使用 , 一般都会 提供 一些接口, 让Android sdk 和 jdk 实现. 下文将会介绍 C 如何 通过 JNI 层调用 Java 的静态和非静态方法. 1.主要流程 1.  新建一个测试类TestProvider.java a)       

Hibernate学习一:Hibernate注解CascadeType

http://zy19982004.iteye.com/blog/1721846 ———————————————————————————————————————————————————————— Hibernate学习一:Hibernate注解CascadeType 博客分类: Hibernate hibernate 一.概念 现有一场景:一个管理员可以管理多个网吧,一个网吧可以被多个管理员管理.从中抽象出一个多对多的例子user-bar. 主控方user:多对多里面里面会有第三张表user_b

SSIS 学习之旅 序章 和 简介

SSIS 学习之旅目录: 第一章: SSIS 学习之旅 第一个SSIS 示例(一) 第二章: SSIS 学习之旅 第一个SSIS 示例(二) 第三章: SSIS 学习之旅 数据同步 第四章: SSIS 学习之旅 FTP文件传输-FTP任务 第五章: SSIS 学习之旅 FTP文件传输-脚本任务 第六章: SSIS 学习之旅 FTP访问类 SSIS是Microsoft SQL Server Integration Services的简称,是生成高性能数据集成解决方案,是Microsoft BI 解

《Hibernate学习笔记十一》:树状结构设计

<Hibernate学习笔记十一>:树状结构设计 这是马士兵老师讲解Hibernate的一个作业题,树状结构设计,这是一个比较典型的例子,因此有必要写篇博文记录下. 树状结构的设计,它是在同一个类中使用了多对一(ManyToOne)和一对多(OneToMany). 在完成这个题目我们应该按照如下的步骤进行: 1.先思考数据库的模型应该是什么样的?? 数据库中的模型应该如下:即存在id p_id 2.思考面向对象的模型,及如何来进行映射??? 根据数据库中表的特点,对象应该有id name;由于

【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)

原文网址:http://www.cnblogs.com/luxiaofeng54/archive/2011/08/20/2147086.html 基于 Android NDK 的学习之旅-----数据传输二(引用数据类型)(附源码) 基于 Android NDK 的学习之旅-----数据传输(引用数据类型) 接着上篇文章继续讲.主要关于引用类型的数据传输,本文将介绍字符串传输和自定义对象的传输. 1.主要流程 1.  String 字符串传输 a)         上层定义一个native的方法

Hibernate学习——一般配置

mysql建表语句: create table EMPLOYEE ( id INT NOT NULL auto_increment, first_name VARCHAR(20) default NULL, last_name VARCHAR(20) default NULL, salary INT default NULL, PRIMARY KEY (id) ); Employee.java package com.study; public class Employee { private

Git命令学习之旅——日志和穿梭版本号

在总结了git命令的基础之后,接下来我们看一下基础的一些进阶内容:删除撤销命令.日志查看命令等 既然有加入文件的功能,那么相相应的肯定有移除文件的功能,命令例如以下:git rm [文件名称] 在输入命令之后,例如以下图所看到的: 提示已经删除了"c.txt"文件.这个时候再用git status查看一下状态,例如以下图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JB