Hibernate如何动态链接数据库 Spring、Hibernate怎么动态加载数据库、表
Hibernate如何动态链接数据库
一.导包 mysql
二.在默认src下创建hibernate.cfg.xml
1.创建xml文件,命名为hibernate.cfg.xml
2.添加约束
(在org.hibernate/hibernate-configuration-3.0.dtd中)
1 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"3 "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
org.hibernate.dialect.MySQLDialectjdbc:mysql://localhost:3306/houserentsys
com.mysql.jdbc.Driverroot12345truefalseupdate
hbm2ddl.auto属性:
create:表示启动的时候先drop,再create
create-drop: 也表示创建,只不过再系统关闭前执行一下drop
update: 这个操作启动的时候会去检查schema是否一致,如果不一致会做scheme更新
validate: 启动时验证现有schema与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新
三.实体 实现序列化接口 封装属性和构造方法 实体.xml 位置随意
(在org.hibernate/hibernate-mapping-3.0.dtd中)
br>"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
在hibernate.cfg.xml 添加 映射文件的引用
七个步骤(在新建的执行文件Test.java中)
//1.加载配置文件
Configuration cfg=new Configuration().configure()
//2.获得sessionfactory
ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry()
SessionFactory sf=cfg.buildSessionFactory(serviceRegistry)
//3.创建session
Session session=sf.openSession()
//4.创建事务
Transaction tx=session.beginTransaction()
//5.操作
District dis=new District(100,"海淀区")
session.save(dis)
//6.提交 回滚
tx.commit()//tx.rollback()
//7.释放资源
Spring、Hibernate怎么动态加载数据库、表
问题1中需要动态生成表与POJO的对应关系。
对每个pojo类建立一个映射文件,名称是简短类名.hbm.xml,存放位置与pojo类一致。
问题2中需要动态加载数据库。
在hibernate.cfg.xml中配置数据库连接信息和方言,设置自动建表语句。
怎样用Hibernate配置多个数据源?
如果用xml配置的话,那就写两个配置文件,可以不再用“hibernate.cfg.xml”做文件名,随便什么都可以,像“mysql.cfg.xml”或“sqlserver.xml”都行。用Configuration类获取SessionFactory的代码: SessionFactory mysqlFactory = new Configuration().configure("mysql.cfg.xml").buildSessionFactory() SessionFactory sqlserverFactory = new Configuration().configure("sqlserver.xml").buildSessionFactory() 如果你用spring,多数据库就更简单了,像这段代码可以完成所有配置: jdbc:mysql://localhost:3306/test org.gjt.mm.mysql.Driver root 123456 org.hibernate.dialect.MySQLDialect test.hbm.xml jdbc:odbc:test sun.jdbc.odbc.JdbcOdbcDriver root 123456 org.hibernate.dialect.SQLServerDialect test.hbm.xml ....... hibernate和spring还有很多可行的配置,可以参考他们的references,有很详细地说明的。
hibernate插入动态数据保证不重复
方法1:
从数据库入手,设定检验重复的主键
方法2:
写个每天读取A表数据的SQL,这个推荐使用
SQL:SELECT * FROM TABLE_A A WHERE A.CREATE_DATE=TO_CHAR(SYSDATE-1,YYYY-MM-DD) AND NOT EXISTS (SELECT * FROM TABLE_B B WHERE B.ID=A.ID)
这上ORACLE的,不知道你具体的表结构和环境。