初级,最笨重的方法:
package com.svse.dao;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.svse.entity.TDept;
//部门数据处理
public class DeptDao_1 {
//全查询 ,
public List getAll(){
List ar = new ArrayList();
//1、加载配置文件,连接数据库
Configuration config = new Configuration().configure();
//2、得到数据映射的工具:SessionFactory;
SessionFactory sessionFactory = config.buildSessionFactory();
//3、得到动作处理工具Session,执行相应的动作;
Session session = sessionFactory.openSession();
//4、使用Session工具执行动作;
ar = session.createQuery("FROM TDept").list();
//5、关闭工具
session.close();
return ar;
}
//查询一个
public TDept getOne(int p_id){
TDept dept = new TDept();
Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
// 通过ID 获取到一个对象;TDept.class 使用到java的反射机制;
dept = (TDept) session.get(TDept.class, new Integer(p_id));
session.close();
return dept;
}
/*************************************************************************/
/********************************
* 增、删、改 :三种操作设计到数据的变化,则影响数据的安全性,所以需要使用事务以保证数据的
* 安全性;
*
*
*
*
********************************/
//增加
public void addDept(TDept dept){
Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction ctx = session.beginTransaction();
//增加session.save(dept);
session.save(dept);
ctx.commit();
session.close();
}
//修改
public void update(TDept dept){
Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
//开启事务
Transaction ctx = session.beginTransaction();
//修改:update();方法
session.update(dept);
//提交事务
ctx.commit();
session.close();
}
//删除
public void delete(TDept dept){
Configuration config = new Configuration().configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
// 开启事务以保证数据的安全性;
Transaction ctx = session.beginTransaction();
//动作:delete(); 操作
session.delete(dept);
//提交事务
ctx.commit();
session.close();
}
public static void main(String[] args) {
DeptDao_1 dao = new DeptDao_1();
System.out.println(dao.getAll().size());
}
}
中级:较为简化的连接方法:
package com.svse.dao;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.svse.entity.TUser;
//使用封装类简化代码进行操作
public class UserDao1 {
//定义基本属性字段
private static Configuration config = null;
private static SessionFactory sessionFactory = null;
private static Session session = null;
private static Transaction ctx = null;
//该内部类的特点:UserDao1这个实例化一次的时候自动的调用一次;
static{
try{
config = new Configuration().configure();
sessionFactory = config.buildSessionFactory();
session = sessionFactory.openSession();
}catch(Exception ex){
ex.printStackTrace();
}
}
//增加
public void addUser(TUser user){
ctx = session.beginTransaction();
session.save(user);
ctx.commit();
session.close();
}
//修改
public void updateUser(TUser user){
ctx = session.beginTransaction();
session.update(user);
ctx.commit();
session.close();
}
//删除
public void delUser(TUser user){
ctx = session.beginTransaction();
session.delete(user);
ctx.commit();
session.close();
}
//全查询
public List getAll(){
List ar = new ArrayList();
ar = session.createQuery("FROM TUser").list();
session.close();
return ar;
}
//查询一个
public TUser getOne(int u_id){
TUser user = new TUser();
user = (TUser) session.get(TUser.class, new Integer(u_id));
session.close();
return user;
}
}
高级:最简单的方法,使用接口封装:
辅助类:
package com.svse.util;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
/**
* Configures and provides access to Hibernate sessions, tied to the
* current thread of execution. Follows the Thread Local Session
* pattern, see {@link http://hibernate.org/42.html }.
*/
public class HibernateSessionFactory {
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static Configuration configuration = new Configuration();
private static org.hibernate.SessionFactory sessionFactory;
private static String configFile = CONFIG_FILE_LOCATION;
static {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateSessionFactory() {
}
/**
* Returns the ThreadLocal Session instance. Lazy initialize
* the <code>SessionFactory</code> if needed.
*
* @return Session
* @throws HibernateException
*/
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
/**
* Rebuild hibernate session factory
*
*/
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
/**
* Close the single hibernate session instance.
*
* @throws HibernateException
*/
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
/**
* return session factory
*
*/
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}
/**
* return session factory
*
* session factory will be rebuilded in the next call
*/
public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory = null;
}
/**
* return hibernate configuration
*
*/
public static Configuration getConfiguration() {
return configuration;
}
}
定义接口规则:
package com.svse.util;
import org.hibernate.Session;
//结果定义规则
public interface IHibernateSessionFactorySupport {
//得到Session
public Session getSession();
//开启事务
public void beginTransaction();
//提交事务
public void commitTransaction();
//关闭所有
public void closeAll();
}
接口实现,编写规则:
package com.svse.util;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class HibernateSessionFactorySupportImpl implements
IHibernateSessionFactorySupport {
//定义事务的对象:
private Transaction ctx = null;
//开启事务
public void beginTransaction() {
ctx = this.getSession().beginTransaction();
}
//提交事务
public void commitTransaction() {
try{
ctx.commit();
}catch(Exception ex){
ex.printStackTrace();
//事务回滚
if(ctx!=null){
ctx.rollback();
}
}finally{
HibernateSessionFactory.closeSession();
}
}
//关闭所有:调用自动生类中定义方法
public void closeAll() {
HibernateSessionFactory.closeSession();
}
//得到Session
public Session getSession() {
//返回一个Session的对象
return HibernateSessionFactory.getSession();
}
}
具体数据获取,访问数据库得到数据:
package com.svse.dao;
import java.util.List;
import com.svse.entity.TUser;
import com.svse.util.HibernateSessionFactorySupportImpl;
public class UserDao2 extends HibernateSessionFactorySupportImpl {
//增加--涉及到数据的变化,需要使用事务
public void addUser(TUser user){
//第一步:开启事务
this.beginTransaction();
//第二步:执行动作
this.getSession().save(user);
//第三步:提交事务,并关闭相关的工具
this.commitTransaction();
}
//修改
public void updateUser(TUser user){
//第一步:涉及到数据的安全性,先开启事务;
this.beginTransaction();
//第二步:获得Session对象并执行修改的动作;
this.getSession().update(user);
//第三步:提交事务,并关闭相关的工具;
this.commitTransaction();
}
//删除
public void delUser(int u_id){
//1、开启事务
this.beginTransaction();
//2、执行动作
this.getSession().delete(this.getOne(u_id));
//3、提交事务:并关闭相关的工具
this.commitTransaction();
}
//查询一个
public TUser getOne(int u_id){
//第一步:获取Session对象执行动作,得到集合对象获取数据;
TUser user= (TUser) this.getSession().get(TUser.class, new Integer(u_id));
//第二步:关闭Session工具;
this.closeAll();
return user;
}
//全查询
public List getAll(){
List ar = this.getSession().createQuery("FROM TUser").list();
this.closeAll();
return ar;
}
public static void main(String[] args) {
UserDao2 dao = new UserDao2();
TUser user = new TUser();
user.setUId(1);
user.setUName("小红aa");
user.setUPwd("123");
dao.updateUser(user);
}
}
分享到:
相关推荐
8. **测试连接**:在代码中编写测试方法,尝试连接数据库,确保配置无误。 在实际开发中,可能会遇到版本兼容性问题、性能优化、事务隔离级别调整等挑战,因此理解这些jar包的功能并熟练掌握其使用是至关重要的。...
为了使用 Hibernate,需要配置连接数据库的设置。下面将介绍 Hibernate 与各种数据库的连接配置,包括 MySql、Sql Server、Oracle 和 DB2 等。 MySql 连接配置 MySql 是一个开源的关系数据库管理系统,广泛应用于 ...
Java通过Hibernate连接数据库是Java开发中的常见操作,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本篇文章将详细讲解如何利用Hibernate在Java项目中建立数据库连接,以及提供一个...
首先,Hibernate连接数据库的核心在于`hibernate.cfg.xml`配置文件。这个文件包含了数据库连接的所有必要信息,如数据库URL、用户名、密码、驱动类等。例如: ```xml <hibernate-configuration> ...
配置 Hibernate 连接数据库 在 Hibernate 的配置文件中,我们可以使用 properties 文件或 XML 文件来配置数据库连接。下面是一个使用 properties 文件配置 Hibernate 连接数据库的示例: hibernate.connection....
此文件主要有Hibernate连接数据库的方法...
连接池通过预先创建并维护一定数量的数据库连接,当程序需要连接数据库时,可以从池中获取一个已存在的连接,而不是每次都创建新的。使用完毕后,连接不会被关闭,而是返回到连接池中供其他线程复用。这样,连接的...
在这个“Hibernate连接数据库模拟”项目中,我们将会深入探讨如何使用Java DOM解析XML配置文件来实现Hibernate的数据访问。 首先,Hibernate的核心在于它的配置文件——`hibernate.cfg.xml`,这个文件包含了数据库...
《Hibernate连接数据库详解》 在IT行业中,数据库管理和数据访问技术是至关重要的组成部分,而Hibernate作为Java领域中的一款优秀对象关系映射(ORM)框架,为开发者提供了方便、高效的数据库操作方式。本篇将深入...
### Hibernate配置数据库连接知识点详解 #### 一、Hibernate简介与作用 Hibernate 是一款开源的对象关系映射(Object Relational Mapping, ORM...掌握这些配置方法对于高效地使用 Hibernate 进行数据库操作至关重要。
【hibernate 连接数据库基础源码】的解析与详解 Hibernate 是一款强大的对象关系映射(ORM)框架,它极大地简化了Java应用程序与数据库之间的交互。在本教程中,我们将深入探讨Hibernate如何连接到MySQL、Oracle等...
在深入探讨Hibernate连接数据库的基础源码之前,我们首先要理解Hibernate是什么。Hibernate是一个开源的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。通过使用Hibernate,开发者可以将业务...
#### 二、配置Hibernate连接数据库 为了成功地使用Hibernate与数据库进行交互,我们需要正确配置`hibernate.cfg.xml`或`persistence.xml`文件中的连接参数。以下是一些关键配置项: - **hibernate.dialect**:指定...
这样,不同的数据库环境只需配置相应的连接参数,而无需修改核心的配置文件。 4. **大字段处理** - 当处理大量数据或大字段时,如BLOB或CLOB类型,需要注意内存管理和数据库性能。可以使用`lob`类型映射,或者考虑...
### Hibernate连接各种数据库的配置详解 #### 一、概述 在软件开发中,数据库操作是一项基本且重要的功能。Hibernate作为一种流行的Java持久层框架,能够帮助开发者简化与数据库交互的过程。本文将详细介绍如何...
**hibernate 连接数据库基础源码3** 在Java编程中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,使开发者可以使用面向对象的方式来处理数据库事务。本教程将深入探讨Hibernate连接...
在本项目中,“java用hibernate连接数据库提取中文”是利用Hibernate框架在Eclipse集成开发环境中与Oracle数据库进行交互,以读取和处理中文数据的小程序。下面我们将详细讨论相关的知识点。 首先,我们需要了解...
这些驱动程序可以让Hibernate连接不同的数据库。但是,为了确保数据的正确性和一致性,Hibernate还需要使用不同的SQL方言来适应不同的数据库。 在Hibernate的配置文件中,我们可以使用元素来设置数据库连接的各种...
`Configuration`类用于加载这个配置文件,`configure()`方法完成解析工作,设置好与数据库的连接参数。 2. **读取并解析映射信息**:映射文件(如`*.hbm.xml`)定义了Java对象与数据库表之间的映射关系。`...