最近在项目组有个需求,客户提出一种设想,客户担心由于程序运行导致数据库的数据运载量过大,降低工作效率,所以客户希望能手动将工程数据库中的数据根据需求手动的导出到其他数据库,由于数据表之间的关联,如果手动进行写sql语句则是一个浩大的工作量,hibernate提供了工作的便捷,由于hibernate具有级联设置,所以用hibernate实现起来就比较简单,但由于借用了框架,性能并咩有那么优越,一下只是一个test,并不是源码,代码如下
-
<?xml version='1.0' encoding='UTF-8'?>
-
<!-- <!DOCTYPE hibernate-configuration PUBLIC
-
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
-
""> -->
-
<!DOCTYPE hibernate-configuration PUBLIC
-
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
-
"">
-
<!-- Generated by MyEclipse Hibernate Tools. -->
-
<hibernate-configuration>
-
<session-factory>
-
<!-- 定义数据库连接驱动 -->
-
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
-
<!-- 指定数据库连接方式 -->
-
<property name="connection.url">jdbc:mysql://localhost/hibernate</property>
-
<property name="connection.username">root</property>
-
<property name="connection.password">root</property>
-
<property name="hibernate.show_sql">true</property>
-
-
<!-- org.hibernate.dialect.MySQL5InnoDBDialect -->
-
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
-
<!-- <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> -->
-
<!-- 是否自动创建表 -->
-
<property name="hbm2ddl.auto">update</property>
-
<mapping resource="model/hibernate-person.xml"/>
-
<mapping resource="model/report.hb.xml"/>
-
</session-factory>
-
-
-
</hibernate-configuration>
这里主要贴出的是数据库变更的实现代码,并不涉及到具体业务,但由于在对应的model映射文件设置了cascade="all",所以对应的
-
package test;
-
-
import java.util.List;
-
-
import model.News;
-
import model.ReportCompany;
-
-
import org.hibernate.Session;
-
import org.hibernate.SessionFactory;
-
import org.hibernate.Transaction;
-
import org.hibernate.cfg.Configuration;
-
class test22{
-
public String transFormer(String sourceData ,String targetData){
-
String succ = "Success";
-
Configuration conf = new Configuration().configure();
-
SessionFactory sessionFactory = conf.buildSessionFactory();
-
Session se = sessionFactory.openSession();
-
List<News> list = se.createQuery("from News").list();
-
se.close();
-
Configuration conf2 = new Configuration().configure();
-
conf2 =conf2.setProperty("hibernate.connection.url", "jdbc:mysql://localhost/transform")
-
/*setProperty("connection.driverClass", "com.mysql.jdbc.Driver")*///设置数据库的地址
-
-
/*.setProperty("dialect", "org.hibernate.dialect.MySQLDialect")*/
-
/*.setProperty("connection.userName", "root")*///设置数据库的用户名
-
-
/*.setProperty("connection.password", "root")*///设置数据库的密码
-
-
;//设置数据库相关属性
-
-
SessionFactory sf2 = conf2.buildSessionFactory();
-
Session se2= sf2.openSession();
-
Transaction trans = se2.beginTransaction();
-
trans.begin();
-
for(int i=0;i<10;i++){
-
News news = new News();
-
ReportCompany repo = new ReportCompany();
-
repo.setCompanyName("hub"+i);
-
news.setCompany(repo);
-
se2.save(news);
-
-
}
-
-
/*for(int i=0;i
-
News new2 = list.get(i);
-
new2.getCompany();
-
//se2.update(new2);
-
se2.save(new2);
-
if(i%20==0){
-
se2.flush();
-
se2.clear();
-
}
-
}*/
-
trans.commit();
-
return succ;
-
}
-
public static void main(String args[]){
-
test22 test = new test22();
-
try{
-
test.transFormer("123","123");
-
}catch(Exception e){
-
System.out.printf("operator is fall\n");
-
e.printStackTrace();
-
-
}
-
-
}
-
-
-
}
阅读(524) | 评论(0) | 转发(0) |