我想使用Hibernate将一些对象保存到具有预定义ID的数据库.是否可以使用Hibernate会话的save方法来实现?
我知道有以下解决方法:
1)使用必要的insert语句执行SQL脚本:
insert into MyObj(id,name) values (100,'aaa'), (101,'bbb');
Run Code Online (Sandbox Code Playgroud)
2)在Hibernate中使用SQL查询:
public static boolean createObj(Long id, String name) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
if (session.get(MyObj.class, id) == null) {
session.beginTransaction();
SQLQuery sqlQuery = session.createSQLQuery
("insert into myobj(id,name) values(?,?)");
sqlQuery.setLong(0, id);
sqlQuery.setString(1, name);
sqlQuery.executeUpdate();
session.getTransaction().commit();
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但是:没有SQLQuery可以吗?
在第11.2节的Hibernate参考中.使对象持久存在代码示例:
或者,您可以使用save()的重载版本来分配标识符.
DomesticCat pk = new DomesticCat();
pk.setColor(Color.TABBY);
pk.setSex('F');
pk.setName("PK");
pk.setKittens( new HashSet() );
pk.addKitten(fritz);
sess.save( pk, new Long(1234) );
Run Code Online (Sandbox Code Playgroud)
但我找不到如何做到这一点的例子.
那么,是否可以使用Hibernate不使用SQL查询将带有提供的ID的新对象保存到数据库?如果是,那怎么样?如何在Hibernate引用中提到的重载会话方法save()? …
什么是金丝雀监测?这是什么意思?金丝雀为什么?
在这里找到了一个金丝雀监控工具:http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/Canary.java? view =标记