- 浏览: 102713 次
- 来自: 北京
文章分类
最新评论
-
^=^:
原来是数字自动转换为对象的意思啊,这样岂不是重用内存变多了。
说说java的自动装箱(autoboxing)和拆箱(unboxing) -
qi90mufeng:
刚好我正需要,谢谢了
hibernate最初印象---helloworld的实现 -
mlc0202:
freedxz 写道好几个 WARN 不处理一下?这个只是当时 ...
hibernate最初印象---helloworld的实现 -
freedxz:
好几个 WARN 不处理一下?
hibernate最初印象---helloworld的实现 -
wzq6578702:
马哥,威武----
感觉路又清晰了
马士兵_JAVA自学之路
本文描述Hibernate访问多个数据库的操作步骤。思路就是,利用Hibernate可以加载不同数据库配置信息的原理,编写一个数据库操作类,再编写一个数据库管理程序[map],将加载的数据库连接实例put早数据库管理程序中。
Hibernate访问多个数据库的设计思路:利用 Hibernate中config = new Configuration().configure(configFile);可以加载不同数据库配置信息的原理,编写一个数据库操作类,再编写一个数据库管理程序[map],将加载的数据库连接实例put早数据库管理程序中,具体实现见下面:
Hibernate访问多个数据库步骤一:hibernate配置文件
localhost.cfg.xml
< ?xml version="1.0" encoding="utf-8"?> < !DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> < hibernate-configuration> < session-factory > < !-- local connection properties --> < property name="hibernate.connection.url">jdbc:mysql://localhost:3306/bookshop?zeroDateTimeBehavior=convertToNull< /property> < property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver< /property> < property name="hibernate.connection.username">root< /property> < property name="hibernate.connection.password">12345678< /property> < !-- property name="hibernate.connection.pool_size">< /property --> < !-- dialect for MySQL --> < property name="dialect">org.hibernate.dialect.MySQLDialect< /property> < property name="hibernate.show_sql">true< /property> < property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory< /property> < property name="hbm2ddl.auto">update< /property> < mapping resource="org/jskyme/data/local/po/Shop.hbm.xml"/> < /session-factory> < /hibernate-configuration>
data_server.cfg.xml
< ?xml version="1.0" encoding="utf-8"?> < !DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> < hibernate-configuration> < session-factory > < !-- local connection properties --> < property name="hibernate.connection.url">jdbc:mysql://192.168.0.10:3306/bookshop?zeroDateTimeBehavior=convertToNull< /property> < property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver< /property> < property name="hibernate.connection.username">root< /property> < property name="hibernate.connection.password">12345678< /property> < !-- property name="hibernate.connection.pool_size">< /property --> < !-- dialect for MySQL --> < property name="dialect">org.hibernate.dialect.MySQLDialect< /property> < property name="hibernate.show_sql">true< /property> < property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory< /property> < property name="hbm2ddl.auto">update< /property> < mapping resource="org/jskyme/data/local/po/Shop.hbm.xml"/> < /session-factory> < /hibernate-configuration>Hibernate访问多个数据库步骤二:数据库访问类:
数据库管理类:DataBaseManager
package org.jskyme.hibernate.util; import java.util.HashMap; public class DataBaseManager extends HashMap { private static final long serialVersionUID = 6491666983237498097L; private static DataBaseManager inst = new DataBaseManager(); public static DataBaseManager getInst() { return inst; } public SessionManager get(Object key) { return (SessionManager) super.get(key); } @Override public Object put(Object key, Object value) { return super.put(key, value); } public static void setInst(DataBaseManager inst) { DataBaseManager.inst = inst; } }
Hibernate连接数据库操作类:
package org.jskyme.hibernate.util; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public final class SessionManager { private Configuration config; private SessionFactory sessionFactory; private Session session; public Criteria createCriteria(Class persistentClass) { return session.createCriteria(persistentClass); } private void buildSession() { sessionFactory = config.buildSessionFactory(); session = sessionFactory.openSession(); } public SessionManager(String configFile) { config = new Configuration().configure(configFile); buildSession(); } public Session getSession() { return session; } public void save(Object obj) { Transaction tx = session.beginTransaction(); session.save(obj); tx.commit(); } public Object load(Class clas, Integer priId) { return session.get(clas, priId); } public Query findbyhql(String hql) { return session.createQuery(hql); } public List pageSizeByhql(String hql) { return findbyhql(hql).list(); } public SQLQuery findbysql(String sql) { return session.createSQLQuery(sql); } public void update(Object obj) { Transaction tx = session.beginTransaction(); session.saveOrUpdate(obj); tx.commit(); } public void delete(Class clas, Integer inte) { session.delete(load(clas, inte)); } public void delete(Object obj) { session.delete(obj); } public void deletebyhql(String hql) { Query query = session.createQuery(hql); query.executeUpdate(); } public Query createQuery(String hql) { return session.createQuery(hql); } }
Hibernate访问多个数据库步骤三:测试类
package org.jskyme.data.test; import junit.framework.TestCase; import org.hibernate.Query; import org.jskyme.hibernate.util.DataBaseManager; import org.jskyme.hibernate.util.SessionManager; public class DataBaseManagerTest extends TestCase { DataBaseManager dbm = DataBaseManager.getInst(); public void testDatabase() { setDatabase(); SessionManager tempSess = dbm.get("dataLocal"); Query query = tempSess.createQuery("from Shop"); query.list(); SessionManager tempSess27 = dbm.get("dateManage"); Query query27 = tempSess27.createQuery("from Shop"); query27.list(); } private void setDatabase() { SessionManager dateManageLocal = new SessionManager("localhost.cfg.xml"); SessionManager dateManage27 = new SessionManager("data_server.cfg.xml"); dbm.put("dateManage", dateManage27); dbm.put("dataLocal", dateManageLocal); } }
发表评论
-
Hibernate性能优化
2012-05-25 22:23 14371、针对Mysql数据库而 ... -
Hibernate 延迟加载的“秘密”
2012-05-25 22:17 1000Hibernae 的延迟加载是一个非常常用的技术,实体的 ... -
hibernate效率问题
2012-05-25 21:37 3196关于hibernate效率问题讨论的整理最近在csdn上看到一 ... -
hibernate+proxool
2012-05-14 09:58 826搞了一天的在hibernate ... -
Hibernate性能测试
2012-05-10 10:36 1119在向大家详细介绍Hiberna ... -
用jtds连接SQL2008的方法
2012-05-09 13:15 1757要点: 数据库URL:jdbc:jtds:s ... -
Hibernate 与 Spring 多数据源的配置
2012-05-05 11:34 1072Hibernate 与 Spring 多数据源的配置 S ... -
Hibernate JDBC比较及系统调优
2012-05-04 16:45 1054Hibernate与JDBC比较 ... -
jdbc与hibernate的优缺点比较(转载的精髓)
2012-05-04 16:41 1035一、 Hibernate是JDBC的 ... -
查询数据库的隔离级别
2012-04-16 11:48 707select @@tx_isolation; 可 ... -
在Hibernate配置文件中设置隔离级别
2012-05-03 21:24 868JDBC连接数据库使用的是默认隔离级别,即读操作已提交(Rea ... -
在Hibernate配置文件中设置隔离级别
2012-05-03 20:30 0JDBC连接数据库使用的是默认隔离级别,即读操作已提交(Rea ... -
hibernate对象的三种状态
2012-03-30 11:07 722Hibernate的透明持久化用起来非常舒服,有时甚至忘记了数 ... -
开发ssh框架程序推荐的目录结构
2012-03-18 06:57 1000开发ssh框架程序推荐 ... -
hibernate的Anotation的应用
2011-12-22 17:14 710A friend is never known till a ... -
hibernate执行流程
2011-12-22 16:13 1824"After you" is good ... -
hibernate最初印象---helloworld的实现
2011-12-22 12:09 2545最近,由于种种原因,开始接触hibernate,今天实现了第一 ...
相关推荐
这个数据库访问控制框架工程名为dbmanager,目前的版本是1.1.8,只支持MYSQL数据库,在未来的两周时间内我会发布后续扩展版本,加入对SQLSERVER, ORACLE,SYBASE,DB2数据库的支持。 之所以想写这个框架,最主要的一个...
16.1.4. 返回多个实体(Returning multiple entities) 16.1.5. 返回非受管实体(Returning non-managed entities) 16.1.6. 处理继承(Handling inheritance) 16.1.7. 参数(Parameters) 16.2. 命名SQL查询 ...
这个数据库访问控制框架工程dbmanager的文档,目前的版本是1.5.6,在原版本1.1.8对MYSQL的支持上加入了对SQLSERVER, ORACLE,SYBASE,DB2数据库的支持。 之所以想写这个框架,最主要的一个原因是,目前在JAVA开发中...
Hibernate Reactive来访问数据库, 编写Java代码以数据模型, 编写React式数据访问代码,以及 程序。 我们建议您从这里开始! 范例程序 目录中有一个非常简单的示例程序。 Gradle构建 该项目是建立与Gradle,但...
(1)Configuration:用于解析hibernate.cfg.xml文件和XXXXX.hbm.xml文件...如果应用同时访问多个DB,怎需要为每个数据库创建一个单独的SessionFactory实例。 (3)Session:也被称为持久化管理器,对象级数据库操作。
现在每个方法都自己开启和关闭事务,暂时还不支持在一个事务中做多个操作然后统一提交事务. * (三)作者寄语: * 昔日有JavaScript借Java发展,今日也希望AHibernate借Hibernate之名发展. * 希望这个项目...
BeetSql是一个全功能DAO工具,同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。 在开发效率上,无需注解,自动使用大量内置SQL,轻易完成增删...
这个数据库访问控制框架工程名为dbmanager,目前的版本是1.5.6,已在上一次发布的1.1.8版本的基础上加入了对SQLSERVER, ORACLE,SYBASE,DB2数据库的支持。 之所以想写这个框架,最主要的一个原因是,目前在JAVA开发中...
1.Hibernate 对 JDBC 访问数据库的代码进行了轻量级封装,大大简化了数据访问层繁琐的重复性代码,并且减少了内存消耗,加快了运行效率。 2.Hibernate 使用 Java 的反射机制,而不是使用字节码增强程序类,并实现了...
等通配符号),多关键字,模糊查询,排序等6,支持Clustering7,支持直接访问Lucene API8,对Lucene索引,API的高效管理Hibernate Search运行的环境如下:1、JDK或JRE 5.0以上2、Hibernate-Search以及相应的依赖包3...
Hibernate框架是一个对象关系映射(ORM)框架,它能够将Java对象与数据库表进行映射,实现Java对象与数据库之间的自动转换。在网上书城系统中,Hibernate框架负责处理与MySQL数据库的交互操作,如查询书籍信息、添加...
1.2. 第一部分 - 第一个Hibernate应用程序 首先我们将创建一个简单的基于控制台的(console-based)Hibernate应用程序。由于我们使用Java数据库(HSQL DB),所以不必安装任何数据库服务器。 假设我们希望有一个小...
BeetlSQL的目标是提供开发高效,维护高效,运行高效的数据库访问框架,在一个系统多个库的情况下,提供一致的编写代码方式。支持如下数据平台。传统数据库:MySQL(国内兼容MySQL协议的各种大数据库),MariaDB,Oracle,...
5.1.2 Hibernate访问持久化类属性的策略 5.1.3 在持久化类的访问方法中加入程序逻辑 5.1.4 设置派生属性 5.1.5 控制insert和update语句 5.2 处理SQL引用标识符 5.3 创建命名策略 5.4 设置数据库Schema...
16.1.4. 返回多个实体(Returning multiple entities) 16.1.5. 返回非受管实体(Returning non-managed entities) 16.1.6. 处理继承(Handling inheritance) 16.1.7. 参数(Parameters) 16.2. 命名SQL查询 ...
第一部分 从Hibernate和EJB 3.0开始 第1章 理解对象/关系持久化 1.1 什么是持久化 1.1.1 关系数据库 1.1.2 理解SQL 1.1.3 在Java中使用SQL 1.1.4 面向对象应用程序中的持久化 1.2 范式不...
(假若您希望使用其它用户名如root,您需要修改hibernate的数据库配置中的连接参数——位于hibernate.cfg.xml中,以及创建数据库表时的连接参数——位于build.xml中。) 7, 确认ant安装正确. ant可以在此下载: ...