private SessionFactory sessionFactory=null;

本文介绍了一个使用Hibernate实现多对一关系管理的测试案例,包括如何解除班级与学生的关系、转移学生到其他班级及重建关系等操作。
package com.tfy.heibernate.mangtoone;


import java.util.Set;


import javax.xml.ws.BindingType;


import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Before;
import org.junit.Test;


public class MangToOneDoubleTest {
private SessionFactory sessionFactory=null;
@Before
public void before(){
Configuration configuration=new Configuration();
configuration.configure();
sessionFactory=configuration.buildSessionFactory();

}
/**
* 1、解除班级和所有的学生之间的关系
* 2、已经存在一个班级,已经存在一个学生,还有另外一个班级,把一个学生从一个班级转到另外一个班级
* 3、解除班级和所有的学生之间的关系,重新建立该班级和一些新的学员之间的关系
* 4、解除班级和一些学生之间的关系
* 5、删除某一个学生
* 6、删除班级
* 删除班级的时候,解除关系
* 删除班级的时候,同时删除学生
* 7、新建一个班级,先解除一个学生和原来班级之间的关系,再建立该学生和新的班级之间的关系
*
* 前提条件:
* Classes不能维护关系
*/
@Test
public void TestMangToOneDoubleRelaes(){
Session session=sessionFactory.openSession();
Transaction transaction=session.beginTransaction();

/*Classes classes=new Classes();
classes.setCname("Icloud");
classes.setDescription("哎哟不错哦");
Student student1=new Student();
student1.setSname("dtu");

Student student2=new Student();
student2.setSname("fll");

student1.setClasses(classes);
student2.setClasses(classes);
session.save(classes);
session.save(student1);
session.save(student2);*/
// 1、解除班级和所有的学生之间的关系
/* Classes classes=(Classes) session.get(Classes.class, 1L);
Set<Student> students=classes.getStudents();
for(Student student:students){
student.setClasses(null);
}*/
// 2、已经存在一个班级,已经存在一个学生,
// 还有另外一个班级,把一个学生从一个班级转到另外一个班级
/* Classes classes1=(Classes) session.get(Classes.class, 1L);
Classes classes2=(Classes) session.get(Classes.class, 2L);
Student student=(Student) session.get(Student.class, 1L);

student.setClasses(classes2);*/
// 3、解除班级和所有的学生之间的关系,
// 重新建立该班级和一些新的学员之间的关系
/*Classes classes=(Classes) session.get(Classes.class, 2L);

Set<Student> students=classes.getStudents();
for(Student student:students){
student.setClasses(null);
}
Student student1=new Student();
student1.setSname("lmj");

Student student2=new Student();
student2.setSname("tiger");

student1.setClasses(classes);
student2.setClasses(classes);

session.save(student1);
session.save(student2);*/
// 4、解除班级和一些学生之间的关系

transaction.commit();
session.close();


}


}
package com.depower.inter.database; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.Reader; import java.util.HashMap; import java.util.InvalidPropertiesFormatException; import java.util.List; import java.util.Properties; import org.apache.ibatis.exceptions.PersistenceException; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.depower.inter.bean.DatasourceBean; import com.depower.inter.tools.CypterFile; import com.depower.inter.tools.Utility; public class ConnectionFactory { private static Logger log = LogManager.getLogger(ConnectionFactory.class.getName()); private static SqlSessionFactory sessionFactory[]; private static HashMap<String, SqlSessionFactory> hm = new HashMap<String, SqlSessionFactory>(); /** * 建立数据池 * * @param datasource */ public static void build(List<DatasourceBean> datasource) { if (datasource == null || datasource.size() == 0) { String errReason = "DB connection init error:not configured connection, program will exit"; log.fatal(errReason); System.exit(-1); } int count = datasource.size(); ConnectionFactory.sessionFactory = new SqlSessionFactory[count]; String tmpstr = "SYSINFO Create connection:%s - Object hashCode:%s"; Properties prop = new Properties(); for (int i = 0; i < count; i++) { try { prop = getProperties(datasource.get(i).getProperties()); log.info("SYSINFO Load DB config:" + new File(datasource.get(i).getDatabaseConfig()).getAbsolutePath()); Reader reader = Resources.getResourceAsReader(datasource.get(i).getDatabaseConfig()); SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); ConnectionFactory.sessionFactory[i] = builder.build(reader, prop); hm.put(datasource.get(i).getAlias(), ConnectionFactory.sessionFactory[i]); ConnectionFactory.log .info(String.format(tmpstr, datasource.get(i).getAlias(), ConnectionFactory.sessionFactory[i].hashCode())); } catch (IOException e) { String errReason = "creat DB connection error:" + e.getLocalizedMessage() + ", program will exit"; log.fatal(errReason, e); System.exit(-1); } } testConnection(); } /** * @Description:创建数据库连接后,测试连接是否可用,如不可用,循环等待,以防止服务器重启时该系统早于数据库启动 */ private static void testConnection() { SqlSession session = null; while (true) { try { for (String key : hm.keySet()) { session = getSession(key); session.selectOne("testConnection"); if (session != null) { session.close(); } } } catch (PersistenceException e) { log.error("SYSINFO test DB connection fail, try again...", e); Utility.delay(15); continue; } break; } log.info("SYSINFO test DB connection successful"); } /** * 取得指定的数据池 * * @param alias * @return * @throws PooledNotFoundException */ public static SqlSession getSession(String alias) { if (hm.get(alias) != null) { return hm.get(alias).openSession(); } else { String errReason = "DB Source: " + alias + " not found,system will exit..."; log.error(errReason); return null; } } /* * 数据池配置参数文件 * * @param filename * * @return * * @throws InvalidPropertiesFormatException * * @throws FileNotFoundException * * @throws IOException */ private static Properties getProperties(String filename) throws InvalidPropertiesFormatException, FileNotFoundException, IOException { Properties prop = new Properties(); log.info("SYSINFO Load DB config:" + new File(filename).getAbsolutePath()); prop.loadFromXML(new FileInputStream(new File(filename))); // 表示内容有加密 if (prop.get("encrypt").equals("1")) { CypterFile cf = new CypterFile(); try { prop = cf.decryptFile(new File(filename)); } catch (Exception e) { String errReason = String.format("Parse DB config <%s> error:%s, program will exit", filename, e.getLocalizedMessage()); log.fatal(errReason, e); System.exit(-1); } } return prop; } } 分析该代码,原本只有mysql连接,现在整合tdengine rs连接的时候,执行prop = getProperties(datasource.get(i).getProperties());报错
最新发布
09-30
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值