Hibernate入门(1)-第一个Hibernate程序
Hibernate入门(1)-第一个Hibernate程序
Hibernate是最著名的ORM工具之一,本系列文章主要学习Hibernate的用法,不涉及Hibernate的原理。本文介绍第一个Hibernate例子,注意,这是一个独立的Hibernate,跟Spring和Struts没有任何关系。
目录结构
main
|--java
|----com
|------chzhao
|--------hibernatetest
|----------Dept.hbm.xml
|----------Dept.java
|----------DeptDao.java
|----------HibernateBase.java
|--resources
|----hibernate.cfg.xml
test
|----com
|------chzhao
|--------hibernatetest
|----------AppTest.java
|----------DeptDaoTest.java
maven 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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wisdombud</groupId>
<artifactId>HibernateTest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>HibernateTest</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<hibernate.version>4.2.0.Final</hibernate.version>
<hibernate.search>4.2.0.Final</hibernate.search>
<mysql-connector-java.version>5.1.29</mysql-connector-java.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search</artifactId>
<version>${hibernate.search}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${hibernate.version}</version>
</dependency>
</dependencies>
</project>
实体类
package com.chzhao.hibernatetest;
public class Dept {
private String id;
private String DeptNo;
private String DName;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDeptNo() {
return DeptNo;
}
public void setDeptNo(String deptNo) {
DeptNo = deptNo;
}
public String getDName() {
return DName;
}
public void setDName(String dName) {
DName = dName;
}
}
映射文件
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.chzhao.hibernatetest">
<class name="Dept" table="dept">
<id name="id" column="id" type="string"></id>
<property name="DeptNo" />
<property name="DName" />
</class>
</hibernate-mapping>
Hibernate操作基础类
package com.chzhao.hibernatetest;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public abstract class HibernateBase {
protected SessionFactory sessionFactory;// 会话工厂,用于创建会话
protected Session session;// hibernate会话
protected Transaction transaction; // hiberante事务
public HibernateBase() throws HibernateException {
this.initHibernate();
}
protected void initHibernate() throws HibernateException {
sessionFactory = new Configuration().configure().buildSessionFactory();
}
protected void beginTransaction() throws HibernateException {
session = sessionFactory.openSession();
transaction = session.beginTransaction();
}
protected void endTransaction(boolean commit) throws HibernateException {
if (commit) {
transaction.commit();
} else {
transaction.rollback();
}
session.close();
}
}
实体操作类
package com.chzhao.hibernatetest;
import java.util.Iterator;
import org.hibernate.HibernateException;
import org.hibernate.Query;
public class DeptDao extends HibernateBase {
public DeptDao() throws HibernateException {
super();
}
public void addDept(Dept Dept) throws HibernateException {
beginTransaction();
session.save(Dept);
endTransaction(true);
}
public Iterator getAllDepts() throws HibernateException {
String queryString = "select Depts from Dept as Dept";
beginTransaction();
Query query = session.createQuery(queryString);
Iterator it = query.iterate();
return it;
}
public void deleteDept(String id) throws HibernateException {
beginTransaction();
Dept Dept = (Dept) session.load(Dept.class, id);
session.delete(Dept);
endTransaction(true);
}
public Iterator getSomeDept(String name) throws HibernateException {
String queryString = "select u from Dept as u where u.name like :name";
beginTransaction();
Query query = session.createQuery(queryString);
query.setString("name", "%" + name + "%");
Iterator it = query.iterate();
return it;
}
}
hibernate配置文件
<?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="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/tz?useUnicode=true&characterEncoding=utf8
</property>
<property name="connection.username">tz</property>
<property name="connection.password">tz</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="show_sql">true</property>
<mapping resource="com/chzhao/hibernatetest/Dept.hbm.xml" />
</session-factory>
</hibernate-configuration>
测试类
package com.chzhao.hibernatetest;
import java.util.UUID;
import junit.framework.TestCase;
public class DeptDaoTest extends TestCase {
public void testAddDept() {
DeptDao dao = new DeptDao();
Dept dept = new Dept();
dept.setDeptNo("3");
dept.setDName("c");
dept.setId(UUID.randomUUID().toString());
dao.addDept(dept);
}
}
Hibernate入门(1)-第一个Hibernate程序的更多相关文章
- hibernate入门配置及第一个hibernate程序
学习了hibernate后就想先给大家分享一下它的配置方法: jar包导入 一.数据库表的创建 二.开启hibernate配置 编译器:eclipse 数据库:mysql 1.创建第一个xml文件 ...
- SpringMVC基础入门,创建一个HelloWorld程序
ref:http://www.admin10000.com/document/6436.html 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要 ...
- JPA+Hibernate 3.3 ——第一个JPA程序
所需要的最小的jar包(注意:jar包所在路径不能含有空格或中文) hibernate3.jarhibernate-cglib-repack-2.1_3.jarslf4j-api-1.5.2.jarj ...
- Servlet快速入门:第一个Servlet程序
Servlet是整个JavaWeb开发的核心,同时也是一套规范,即公共接口.用于处理客户端发来的请求并作出响应.通常情况下我们会发送不同的请求并交由不同的处理程序来处理,例如处理用户信息和处理订单信息 ...
- Node.js入门以及第一个helloworld程序
1.概念:简单的说 Node.js 就是运行在服务端的 JavaScript.学之前需要明白Node.js是无法挑战jsp.php或者asp这种老牌网站的地位的,是永远不会出现在证券.金融这种领域的. ...
- Hibernate入门(4)- Hibernate数据操作
Hibernate加载数据 Session.get(Class clazz, Serializable id) clazz:需要加载对象的类,例如:User.class id:查询条件(实现了序列化接 ...
- K8S集群入门:运行一个应用程序究竟需要多少集群?
如果你使用Kubernetes作为应用程序的操作平台,那么你应该会遇到一些有关使用集群的方式的基本问题: 你应该有多少集群? 它们应该多大? 它们应该包含什么? 本文将深入讨论这些问题,并分析你所拥有 ...
- Hibernate学习笔记--第一个Hibernate框架程序
一般使用集成开发环境是,把所需的类库添加到项目属性的库路径中,开发工具在部署时会自动复制所需要的类包到WEB-INF\lib目录下 MyEclipse中: 创建项目,右击项目->myeclips ...
- Hibernate入门教程(二):Hibernate核心API
1.Configuraction onfiguration configuration = new Configuration(); configuration.configure(); 到src下面 ...
- SpringBoot框架:快速入门搭建运行一个应用程序(一)
一.环境配置 Java环境:1.8版本 开发工具:IntelliJ IDEA 二.简单应用 1.创建项目 选择创建的项目类型为Spring Initializr,Project SDK选择1.8版本的 ...
随机推荐
- C#实现GDI+基本图的缩放、拖拽、移动
C#实现GDI+基本图的缩放.拖拽.移动示例代码如下: using System;using System.Collections.Generic;using System.ComponentMode ...
- C++中变量自动初始化的问题
C++中有一些变量在如果没有赋初值会被编译器自动赋值为0,但有的变量又不会这样,而得到一个随机数,下面具体讨论一下: 首先看一下C++中的几个存储区:1.栈区:由编译器自动分配释放 ,存放函数的参数值 ...
- oracle视图总结(转)
视图简介: 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表.视图是存储在数据字典里的一条select语句. 通过创建视图可以提取数 ...
- Codeforces Round #254 (Div. 2) B. DZY Loves Chemistry (并查集)
题目链接 昨天晚上没有做出来,刚看题目的时候还把题意理解错了,当时想着以什么样的顺序倒,想着就饶进去了, 也被题目下面的示例分析给误导了. 题意: 有1-n种化学药剂 总共有m对试剂能反应,按不同的 ...
- axis : java.lang.NoSuchMethodError
Hi friends,Iam getting the following error when deploying my app in jboss error.Iam new to axis .can ...
- Ionic开发中常见问题和解决方案记录
1npm按装包失败 更换源:npm config set registry https://registry.npm.taobao.org 或者使用cnpm sudo npm install -g c ...
- Web Api 中使用 PCM TO WAV 的语音操作
/// <summary> /// 语音[文件.上传.解码.保存(WAV)] /// </summary> [DeveloperEx("Liwei:秘书语音需求单&q ...
- UVA 10765 Doves and bombs(双连通分量)
题意:在一个无向连通图上,求任意删除一个点,余下连通块的个数. 对于一个非割顶的点,删除之后,原图仍连通,即余下连通块个数为1:对于割顶,余下连通块个数>=2. 由于是用dfs查找双连通分量,树 ...
- libogg.so fro android编译方法
在网站下载源代码http://www.xiph.org/downloads/ 解压然后打开cygwin配置 CXX=arm-linux-androideabi-g++.exe LD=arm-linux ...
- dict 字典
Python 学习笔记[dict的操作方法] Python中dict详解