- 浏览: 175612 次
- 性别:
- 来自: 重庆
最新评论
-
2047699523:
java图片工具类源代码下载:http://www.zuida ...
java实现图片的打印 -
34176470:
Exception in thread "main& ...
java打印Excel -
lionios:
请问为什么一定要有PrintService service = ...
java实现图片的打印 -
javawang2012:
如果是java web树就好了
java自动生成目录树
以前听起hibernate总感觉是一个很奇怪的东西,不知道是用做什么,只知道是一个框架,今天对hibernate的学习,使我受益匪浅,知道了hibernate的作用。
以前在写程序的时候看,特别是在编写连接数据库程序的时候,总要用到jdbc,提前都感觉到jdbc是一个很好的手工方式,并没有想到更好的实现方法,也不知道jdbc的缺点是什么,因为在做大型项目的时候,必定会要写很多的程序,当然操作数据库的更不可缺,所以每次的有很多都是重复的,而且在对象模型和关系模型之间总会遇到很多的问题,也往往会转来转去的,当用了hibernate后,可以很方便的操作数据,不用写那么麻烦的代码,节省了很多的操作和代码的编写,这样大大提高了代码编写的效率,提高了开发的速度!现在将走向hibernate的世界:
一:首先要使用hibernate框架,必定要引入hibernate2.jar包,当然还要引入很多的包,然后写一个与数据表对应的JavaBean类,与数据库的字段对应,比如一个简单的java类如下:
package tmc.hibernat.domian;
import java.util.Date;
public class User {
private int id;
private String name;
private Date date;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
然后编写一个映射的文件,
<?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="tmc.hibernat.domian">
<class name="User">
<id name="id">
<generator class="native" />
</id>
<property name="name" unique="true" />
<property name="date" />
</class>
</hibernate-mapping>
在写一个加载数据库和连接数据库的的配置文件:
<!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">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<mapping resource="tmc/hibernat/domian/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
在此,一切的准备都已经完成,接下来执行写一些service的java类对数据库进行操作,就可以实现对数据库的操做了
写一个service的java类:
package tmc.hibernate.service;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public final class HibernateUitl {
private static SessionFactory sessionFactory;
private HibernateUitl(){
}
/**
* 初始化代码
*/
static{
//配置的一个实例说明属性允许应用程序在测绘文件被用来当创造一个SessionFactory
Configuration cfg = new Configuration();
cfg.configure();//读取配置文件
sessionFactory = cfg.buildSessionFactory();//找出配置文件的所有信息
}
/**
* 获取SessionFactory的方法
* @return
*/
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
/**
* 获取session的方法
* @return
*/
public static Session getSession(){
return sessionFactory.openSession();
}
}
然后写对数据库的各种操作:
1.写一个接口:
package tmc.hibernat.domian;
public interface UserDao {
public void saveUser(User user);
public User findUserById(int id);
public User findUserByName(String name);
public void updateUser(User user);
public void remove(User user);
}
2.实现接口:
package tmc.hibernate.service;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import tmc.hibernat.domian.User;
import tmc.hibernat.domian.UserDao;
public class UserHibernateImp implements UserDao{
/**
* 根据id获取查询数据库的内容
*/
@Override
public User findUserById(int id) {
Session s = null;
try{
s = HibernateUitl.getSession();
//Criteria c = s.createCriteria(User.class);
//c.add(Restrictions.eq("name",name));
User user =(User)s.get(User.class,id);//User.class方便找到映射文件
return user;
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 根据用户名,查询用户的信息
*/
@Override
public User findUserByName(String name) {
Session s = null;
try{
s = HibernateUitl.getSession();
Criteria c = s.createCriteria(User.class);
c.add(Restrictions.eq("name",name));
User user =(User)c.uniqueResult();//映射是唯一的
return user;
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 和上面的使用是一样的,只是用不同的查询方式而已
* @param name
* @return
*/
public User findUserByName1(String name) {
Session s = null;
try{
s = HibernateUitl.getSession();
//Criteria c = s.createCriteria(User.class);
//c.add(Restrictions.eq("name",name));
String hql = "from User as user where user.name=:n";
Query q = s.createQuery(hql);
q.setString("n",name);
User user =(User)q.uniqueResult();//映射是唯一的
return user;
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 移除数据库一条记录
* @see tmc.hibernat.domian.UserDao#remove(tmc.hibernat.domian.User)
*/
@Override
public void remove(User user) {
Session s = null;
//创建一个事务
Transaction tx = null;
try{
s = HibernateUitl.getSession();
tx = s.beginTransaction();
s.delete(user);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 向数据库添加数据
*/
@Override
public void saveUser(User user) {
Session s = null;
//创建一个事务
Transaction tx = null;
try{
s = HibernateUitl.getSession();
tx = s.beginTransaction();
s.save(user);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 修改数据库数据
*/
@Override
public void updateUser(User user) {
Session s = null;
//创建一个事务
Transaction tx = null;
try{
s = HibernateUitl.getSession();
tx = s.beginTransaction();
s.update(user);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
}
}
3.测试上面的类:
package tmc.hibernate.service;
import java.util.Date;
import tmc.hibernat.domian.User;
import tmc.hibernat.domian.UserDao;
public class TestDao {
public static void main(String[] args){
UserDao dao = new UserHibernateImp();
User user = new User();
user.setName("name");
user.setDate(new Date());
System.out.println("1111");
dao.saveUser(user);
user.setName("new name");
System.out.println("222");
dao.updateUser(user);
User u = dao.findUserByName(user.getName());
System.out.println("3333");
}
}
这样的话,就可以完成了对数据库的各种操作,这样写真的很方便,很灵活,减少了很多的重复代码,但就是配置文件的时候很麻烦,呵呵,反正很多都这样的,没有十全十美的东西,但只要好用,就足够了!
以前在写程序的时候看,特别是在编写连接数据库程序的时候,总要用到jdbc,提前都感觉到jdbc是一个很好的手工方式,并没有想到更好的实现方法,也不知道jdbc的缺点是什么,因为在做大型项目的时候,必定会要写很多的程序,当然操作数据库的更不可缺,所以每次的有很多都是重复的,而且在对象模型和关系模型之间总会遇到很多的问题,也往往会转来转去的,当用了hibernate后,可以很方便的操作数据,不用写那么麻烦的代码,节省了很多的操作和代码的编写,这样大大提高了代码编写的效率,提高了开发的速度!现在将走向hibernate的世界:
一:首先要使用hibernate框架,必定要引入hibernate2.jar包,当然还要引入很多的包,然后写一个与数据表对应的JavaBean类,与数据库的字段对应,比如一个简单的java类如下:
package tmc.hibernat.domian;
import java.util.Date;
public class User {
private int id;
private String name;
private Date date;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
然后编写一个映射的文件,
<?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="tmc.hibernat.domian">
<class name="User">
<id name="id">
<generator class="native" />
</id>
<property name="name" unique="true" />
<property name="date" />
</class>
</hibernate-mapping>
在写一个加载数据库和连接数据库的的配置文件:
<!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">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<mapping resource="tmc/hibernat/domian/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
在此,一切的准备都已经完成,接下来执行写一些service的java类对数据库进行操作,就可以实现对数据库的操做了
写一个service的java类:
package tmc.hibernate.service;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public final class HibernateUitl {
private static SessionFactory sessionFactory;
private HibernateUitl(){
}
/**
* 初始化代码
*/
static{
//配置的一个实例说明属性允许应用程序在测绘文件被用来当创造一个SessionFactory
Configuration cfg = new Configuration();
cfg.configure();//读取配置文件
sessionFactory = cfg.buildSessionFactory();//找出配置文件的所有信息
}
/**
* 获取SessionFactory的方法
* @return
*/
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
/**
* 获取session的方法
* @return
*/
public static Session getSession(){
return sessionFactory.openSession();
}
}
然后写对数据库的各种操作:
1.写一个接口:
package tmc.hibernat.domian;
public interface UserDao {
public void saveUser(User user);
public User findUserById(int id);
public User findUserByName(String name);
public void updateUser(User user);
public void remove(User user);
}
2.实现接口:
package tmc.hibernate.service;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import tmc.hibernat.domian.User;
import tmc.hibernat.domian.UserDao;
public class UserHibernateImp implements UserDao{
/**
* 根据id获取查询数据库的内容
*/
@Override
public User findUserById(int id) {
Session s = null;
try{
s = HibernateUitl.getSession();
//Criteria c = s.createCriteria(User.class);
//c.add(Restrictions.eq("name",name));
User user =(User)s.get(User.class,id);//User.class方便找到映射文件
return user;
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 根据用户名,查询用户的信息
*/
@Override
public User findUserByName(String name) {
Session s = null;
try{
s = HibernateUitl.getSession();
Criteria c = s.createCriteria(User.class);
c.add(Restrictions.eq("name",name));
User user =(User)c.uniqueResult();//映射是唯一的
return user;
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 和上面的使用是一样的,只是用不同的查询方式而已
* @param name
* @return
*/
public User findUserByName1(String name) {
Session s = null;
try{
s = HibernateUitl.getSession();
//Criteria c = s.createCriteria(User.class);
//c.add(Restrictions.eq("name",name));
String hql = "from User as user where user.name=:n";
Query q = s.createQuery(hql);
q.setString("n",name);
User user =(User)q.uniqueResult();//映射是唯一的
return user;
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 移除数据库一条记录
* @see tmc.hibernat.domian.UserDao#remove(tmc.hibernat.domian.User)
*/
@Override
public void remove(User user) {
Session s = null;
//创建一个事务
Transaction tx = null;
try{
s = HibernateUitl.getSession();
tx = s.beginTransaction();
s.delete(user);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 向数据库添加数据
*/
@Override
public void saveUser(User user) {
Session s = null;
//创建一个事务
Transaction tx = null;
try{
s = HibernateUitl.getSession();
tx = s.beginTransaction();
s.save(user);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 修改数据库数据
*/
@Override
public void updateUser(User user) {
Session s = null;
//创建一个事务
Transaction tx = null;
try{
s = HibernateUitl.getSession();
tx = s.beginTransaction();
s.update(user);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
}
}
3.测试上面的类:
package tmc.hibernate.service;
import java.util.Date;
import tmc.hibernat.domian.User;
import tmc.hibernat.domian.UserDao;
public class TestDao {
public static void main(String[] args){
UserDao dao = new UserHibernateImp();
User user = new User();
user.setName("name");
user.setDate(new Date());
System.out.println("1111");
dao.saveUser(user);
user.setName("new name");
System.out.println("222");
dao.updateUser(user);
User u = dao.findUserByName(user.getName());
System.out.println("3333");
}
}
这样的话,就可以完成了对数据库的各种操作,这样写真的很方便,很灵活,减少了很多的重复代码,但就是配置文件的时候很麻烦,呵呵,反正很多都这样的,没有十全十美的东西,但只要好用,就足够了!
发表评论
-
OpenBravo 在eclipse下项目建立
2012-09-28 11:12 1100OpenBravo 在eclipse下项目建立 介绍 Open ... -
Spring 3.0 基于Annotation 的依赖注入实现详解
2012-04-13 13:36 821今天在网上看到有关spri ... -
java定时操作的三种方式
2012-04-12 10:40 10441)java.util.Timer 这个方法应该是最常用的,不 ... -
把数据存在磁盘中
2011-10-18 11:08 1121一:数据封转成集合,保存在磁盘的临时文件中 /** * 写 ... -
java程序创建导入,导出,创建数据库
2011-08-23 15:45 2802在做项目的时候,往往会遇到数据库创建,备份,还原等功能,jav ... -
java自动生成目录树
2011-07-29 19:41 7550今天写了一天的目录树 ... -
java过滤图片
2011-07-17 13:23 2314有时候我们再写项目的时候需要对读取或保存文件进行过滤,便于安全 ... -
java实现Excel和图片的打印预览
2011-07-09 18:00 9070今天忙了一天,终于把打印预览的功能给实现了,因为昨天写了两个打 ... -
java打印Excel
2011-07-09 14:25 4310首先先下载jcom.jar和jcom.dll文件,把dll文件 ... -
java实现图片的打印
2011-07-08 17:40 18137打印图片,支持打印gif,jpg,png等格式图片的 pack ... -
刷新Jtable
2011-06-30 16:40 3034以前在做GUI开发的时候,往往会碰到Jtable的数据不能刷新 ... -
自定义画图
2011-06-29 15:43 1104近来在做绘图程序,对自定义绘图很模糊,一直想了很久,因为在项目 ... -
hibernate的复习
2011-06-17 15:31 876今天突然感觉到自己学的东西,都快忘完了,而且可能以后会用到,所 ... -
Tomcat环境变量配置
2011-06-17 10:39 17381.===> 进入bin目录下,双击startup.ba ... -
一个简单的工资支付系统
2011-06-13 15:13 1209帮同学做了一个工资支付系统,感觉功能还可以,基本上达到了要求, ... -
sqlserver驱动jar包
2011-04-30 12:18 1455近来在网上找了了sqlserver的驱动jar包感觉到很难,弄 ... -
文件下载
2011-04-29 11:44 938在android开发中,会经常用的文件下载的功能,比如有时候我 ... -
android简单的乘法运算
2011-04-27 09:44 1781最近在自学android,自己在学习的时候,做了一个简单的乘法 ... -
Android_SDK与Eclipse最新版开发环境搭建
2011-03-13 16:32 802android的安装步骤收集 -
java垃圾回收机制详解
2011-02-07 12:24 777今天在看java基础的时候 ...
相关推荐
对hibernate的数据库操作封装: 1.分页查询 2.保存对象 3.保存对象组 4. 更新对象 5.更新对象组 6.保存或更新对象 7.保存或更新对象组 8. 删除对象 9. 删除对象组 10.删除对象(此类的所有对象) 11.删除(HQL) 12....
**hibernate数据库相关操作步骤** Hibernate是一款强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用中操作数据库的简便方法。通过使用Hibernate,开发人员可以避免直接编写SQL语句,而是通过面向...
Hibernate是一款强大的Java持久化框架,它简化了与关系型数据库如SQL Server的交互。通过将对象映射到数据库表,...总之,熟练掌握Hibernate的操作步骤和特性,对于提高Java开发中的数据库操作效率有着重要作用。
在Java项目中,Hibernate通过jar包的形式提供服务,使得开发人员能够快速集成并进行数据库操作。 一、Hibernate概览 Hibernate是由JBoss公司开发的一个开源ORM框架,它实现了Java Persistence API(JPA),使得Java...
Hibernate与JDBC对于数据库的性能操作对比事例,配置,更多信息资源
Hibernate是一个强大的Java持久化框架,它允许开发者将对象模型与关系数据库进行映射,从而简化了数据库操作。在处理多数据库支持时,Hibernate提供了一些策略和技巧来确保应用程序能够在不同类型的数据库之间灵活...
本资料包"Java封装hibernate操作数据库.rar"主要涉及了如何使用Hibernate进行数据库操作,并通过DAO(Data Access Object)层的封装来实现更加高效、简洁的代码结构。 首先,让我们深入了解Hibernate。Hibernate是一...
下面我们将详细探讨在Hibernate框架下对Oracle数据库操作所需的知识点。 1. **Hibernate框架简介** Hibernate是一个开源的Java库,它允许开发者在Java应用中使用对象关系映射技术,将Java对象与关系数据库的数据表...
Hibernate是一种流行的Java ORM(对象关系映射)框架,它用于简化数据库操作,使得Java开发人员能够以面向对象的方式来操作关系数据库。使用Hibernate,开发者无需直接使用JDBC API,因为Hibernate封装了大部分...
在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者通过Java对象来操作数据库,极大地简化了数据库操作。金仓数据库,又称为Kingbase,是一款国产的高性能、高可靠性的关系型数据库管理...
ORM允许开发者使用面向对象的方式来操作数据库,而无需关注底层的SQL语句。通过配置文件或注解,Hibernate可以将Java对象与数据库表进行映射,实现了数据的透明访问。 在动态数据库进化版中,我们可能涉及到以下几...
配置数据库连接是使用 Hibernate 进行数据库操作的基础步骤。正确地配置数据库连接不仅能够确保应用程序能够顺利访问数据库,还能够提高程序的运行效率。此外,合理的配置还可以帮助我们更好地管理数据库资源,减少...
本主题“基于Spring与Hibernate的数据库操作进阶”将深入探讨如何利用这两个框架进行高级的数据库交互。 首先,Spring是一个开源的Java平台,它简化了应用程序的开发,并提供了全面的框架支持,包括依赖注入(DI)...
ORM将数据库表映射为Java类,表中的记录映射为类的实例,列映射为类的属性,使得数据库操作与具体的SQL语法分离。 2. **配置文件**: Hibernate 的使用始于配置文件(hibernate.cfg.xml),该文件定义了数据库连接...
整个过程既遵循了MVC设计模式,又利用了Hibernate对数据库操作的便利性。 在Oracle数据库中,你需要预先创建相应的表结构,以便与Hibernate的实体类匹配。Hibernate的自动建表功能(hbm2ddl.auto)可以根据实体类...
标题"Hibernate数据库操作实例.zip"表明这是一个关于使用Hibernate框架进行数据库操作的实际案例。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发人员使用面向对象的方式来处理数据库交互,而无需...
在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本篇文章将深入探讨如何利用Hibernate实现动态数据库操作,并结合具体的实例,介绍一个改进版的实现方式。文章来源于...
**基于Hibernate的简单数据库实现** Hibernate是一个开源的对象关系映射(ORM)框架...在实际项目中,可以根据需求选择合适的方式进行数据库操作,同时利用Hibernate的高级特性,如缓存、查询优化等,来提升应用性能。
在Java开发中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以用Java对象来操作数据库记录。本教程针对初学者,将介绍如何使用Hibernate从数据库中查询并显示数据。 ...
【标题】"自己动手模仿Hibernate写数据库框架"揭示了本次讨论的核心内容——尝试构建一个类似于Hibernate的数据库操作框架。Hibernate是一个流行的Java ORM(对象关系映射)框架,它简化了数据库与Java对象之间的...