【发布时间】:2016-03-20 01:26:40
【问题描述】:
我正在使用 JPA/HIBERNATE 来管理我的 mysql 数据库(读取和写入),其他应用程序使用相同的数据库(只读)。 我想要做的是:当我在java(休眠)中编辑我的数据库时,我希望所有其他应用程序都可以读取旧值,当我的程序完成时,我想切换到程序修改的新值。
我该怎么做?
这里是代码
public static Integer (Equipment equipment)
{
Session session = factory.openSession();
Transaction tx = null;
Integer equipementID = null;
try{
tx = session.beginTransaction();
equipementID = (Integer) session.save(equipment);
tx.commit();
}catch (ConstraintViolationException e) {
if (tx!=null) tx.rollback();
}finally {
}
return equipementID;
}
public static void parseFile (String filePath1) throws IOException
{
Scanner s1 = new Scanner(new File(filePath1));
s1.useDelimiter("\\s*fish\\s*");
while (s1.hasNextLine())
{
Scanner s2 = new Scanner (s1.nextLine());
s2.useDelimiter(";");
while (s2.hasNext()) {
String hostName = s2.next();
int asNum=s2.nextInt();
String type=s2.next();
String addrIp=s2.next();
String vendor=s2.next();
String model=s2.next();
String version=s2.next();
String function=s2.next();
String usage=s2.next();
if (asNum==3215)
addEquipmentToDatabase(new Equipment(hostName,0,addrIp,"ftipnn",asNum,model,type,vendor,function,usage,version,1,0));
else
updateEquipment(equipment,new Equipment(hostName,0,addrIp,"domain",asNum,model,type,vendor,function,usage,version,1,0));
}
}
s2.close();
}
s1.close();
}
public static void updateEquipment (Equipment actualEquipment,Equipment newEquipment)
{
Transaction tx = session.beginTransaction();
Query query = session.createSQLQuery("UPDATE equipment SET hostName = '"+newEquipment.getHostName()+"',"
+"parity= '"+newEquipment.getParity()+"',"
+"addrIP= '"+newEquipment.getAddrIP()+"',"
+"domainExtension= '"+newEquipment.getDomainExtension()+"',"
+"asNum= '"+newEquipment.getAsNum()+"',"
+"model= '"+newEquipment.getModel()+"',"
+"type= '"+newEquipment.getType()+"',"
+"vendor ='"+newEquipment.getVendor()+"',"
+"function= '"+newEquipment.getFunction()+"',"
+"utilization= '"+newEquipment.getUtilization()+"',"
+"version= '"+newEquipment.getVersion()+"',"
+"idSite= '"+newEquipment.getIdSite()+"',"
+"idProfile= '"+newEquipment.getIdProfile()+"' "+
"WHERE hostName LIKE '"+actualEquipment.getHostName()+"'") ;
query.executeUpdate();
tx.commit();
}
【问题讨论】:
-
请分享您迄今为止使用过的任何代码。见这里:stackoverflow.com/help/mcve
-
我加入了一个操作数据库的代码示例。
标签: java mysql database hibernate jpa