第一节 Hibernate 基本配置
1 新建maven工程
1)打开eclipse,依次点击File---->New---->Maven Project.
2)选择org.apache.maven.archetypes maven-archetype-quickstart选项,点击next.
3)输入Group Id: com.binyulan 输入Artifact Id: persistence.
4)点击Finish.
2 打开pom.xml,引入所需依赖
1)引入Junit,用于单元测试
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
2)引入hibernate,用于持久化
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.2.Final</version>
</dependency>
3)引入mysql,用于存储数据
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
3 创建java端domain对象,并且编写映射文件,将domain对象中的字段与数据库中的字段一一对应
1)新建domain对象com.binyulan.domain.User
package com.binyulan.domain;
import java.sql.Date;
public class User {
private long id;
private String name;
private Date birthday;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
2)编写映射文件User.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">
<!-- Generated 2016-6-28 11:38:36 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="com.binyulan.domain.User" table="user">
<id name="id" type="long">
<column name="id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="name" />
</property>
<property name="birthday" type="java.sql.Date">
<column name="birthday" />
</property>
</class>
</hibernate-mapping>
4 创建hibernate配置文件,用于配置连接数据库信息,引入映射文件等。
<?xml version="1.0" encoding="UTF-8"?>
<!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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库链接地址 -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/binyulan</property>
<!-- 数据库用户名称 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库密码 -->
<property name="connection.password">123456</property>
<!-- 设置数据库SQL语言类型 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<!-- 设置是否显示SQL语句-->
<property name="show_sql">true</property>
<!-- 设置是否格式化SQL语句 -->
<property name="format_sql">true</property>
<!-- 自动建表,取值有四种:
create: 根据映射文件生成表, 每次执行都删除之前创建过的表
create-drop: 根据映射文件生成表,每次执行完毕都会删除表
update: 根据映射文件生成表,若以后表结构与映射文件不同,则更新表结构,但不会删除之前的记录,也不会删除映射文件中不存在的列
validate: 不会根据映射文件生成表,只会校验映射文件和表结构是否一致,不一致则抛异常
-->
<property name="hbm2ddl.auto">update</property>
<!-- 引入映射文件 -->
<mapping resource="com/binyulan/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
5 编写测试类
package com.binyulan.persistence1; import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import com.binyulan.domain.User;
public class SimpleTest { private Session session;
private Transaction transaction;
@Before
public void init(){
Configuration cfg = new Configuration().configure();
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
session = cfg.buildSessionFactory(serviceRegistry).openSession();
transaction = session.beginTransaction();
} @After
public void destory(){
transaction.commit();
session.close();
} @Test
public void testSave() {
try {
User user = new User();
user.setBirthday(new java.sql.Date(0));
user.setName("abc");
session.save(user);
} catch (HibernateException e) {
if (transaction != null) {
transaction.rollback();
}
throw e;
}
}
}
转载请标注出处,谢谢。
第一节 Hibernate 基本配置的更多相关文章
- Centos7 Openstack - (第一节)基本环境配置
Centos7 install Openstack - (第一节)基本环境配置 我的blog地址:http://www.cnblogs.com/caoguo 根据openstack官方文档配置 官方文 ...
- 【hibernate】<第一节>hibernate简单入门
所需工具: ide:eclipse or myeclipse jdk:1.7 jar包:hibernate-distribution-3.6.0.Final 和对应mysql的驱动类(对应jar包如图 ...
- git第一节----git config配置
@查看git的版本 git --version @查看git配置信息 git config --list config list分全局和局部,在根目录下执行git config --list显示为全局 ...
- 第一节:ASP.NET开发环境配置
第一节:ASP.NET开发环境配置 什么是ASP.NET,学这个可以做什么,学习这些有什么内容? ASP.NET是微软公司推出的WEB开发技术. 2002年,推出第一个版本,先后推出ASP.NET2. ...
- Ionic 入门与实战之第二章第一节:Ionic 环境搭建之开发环境配置
原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第二章第一节,主要对 Ionic 的开发环境配置做了简要的介绍,本文介绍的开发环境为 Mac 系统,Windows 系统基本类似,少许 ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- 第二节 hibernate session介绍以及session常用方法介绍
原创地址:http://www.cnblogs.com/binyulan/p/5628579.html Session是java应用程序和hibernate框架之间的一个主要接口.它是从持久化服务中剥 ...
- (十一)Hibernate 高级配置
第一节:配置数据库连接池 反问数据库,需要不断的创建和释放连接,假如访问量大的话,效率比较低级,服务器消耗大: 使用数据库连接池,我们可以根据实际项目的情况,定义连接池的连接个数,从而可以实现从连接池 ...
- Hibernate学习11——Hibernate 高级配置(连接池、log4j)
第一节:配置数据库连接池 这里配置c3p0连接池,需要的jar包: jar包位于hibernate压缩包的:hibernate-release-4.3.5.Final\lib\optional\c3p ...
随机推荐
- Codeforces Round #329 (Div. 2) B. Anton and Lines 逆序对
B. Anton and Lines Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/593/pr ...
- HDU 4932 贪心
Miaomiao's Geometry Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- ios开发——实用技术篇Swift篇&系统声音
系统声音 // MARK: - 系统声音 /*----- 系统声音 ------*/ @IBAction func systemSound() { //建立的SystemSoundID对象 var s ...
- android151 笔记 3
34. 对android虚拟机的理解,包括内存管理机制垃圾回收机制. 虚拟机很小,空间很小,谈谈移动设备的虚拟机的大小限制 16M , 谈谈加载图片的时候怎么处理大图片的,压缩. 垃圾回收,没有引用的 ...
- slots - Python的结构体 转
上个月看了篇文章 “SAVING 9 GB OF RAM WITH PYTHON’S __SLOTS__”,原来Python也有类似结构体的东东.拖了一个月才写这篇,是因为太久没看pyth ...
- 文本编辑器Nano实用快捷键
一.复制.剪切和粘贴文本 1.行复制.剪切和粘贴 Alt+6:复制光标所在行. Ctrl+K:剪切光标所在行. Ctrl+U:粘贴. 2.自由复制.剪切和粘贴 自由复制: Ctrl+6:设置复制文本的 ...
- 小白日记41:kali渗透测试之Web渗透-SQL手工注入(三)-猜测列名、表名、库名、字段内容,数据库写入
SQL手工注入 靶机:metasploitable(低) 1.当无权读取infomation_schema库[MySQL最重要的源数据库,必须有root权限]/拒绝union.order by语句 ...
- 小白日记18:kali渗透测试之缓冲区溢出实例(二)--Linux,穿越火线1.9.0
Linux系统下穿越火线-缓冲区溢出 原理:crossfire 1.9.0 版本接受入站 socket 连接时存在缓冲区溢出漏洞. 工具: 调试工具:edb: ###python在漏洞溢出方面的渗透测 ...
- Android进阶笔记16:ListView篇之ListView刷新显示(全局 和 局部)
一.ListView内容变化后,动态刷新的步骤(全局刷新): (1)更新适配器Adapter数据源:(不要使用匿名内部类) (2)调用适配器Adapter的刷新方法notifyDataSetChang ...
- CSS 创建方式与优先级
最近想学习自动化测试--web元素的匹配查找,一直搞不懂CSS的相关标签与对元素的渲染方式. 本文转自W3School: http://www.w3school.com.cn/css/css_howt ...