背景:
普通的java项目,单独添加hibernate框架,不添加其他任何框架的情况下。
分析:
没有使用事务管理模式,myEclipse的反向工程生成的dao的save方法
public void save(Cigarette transientInstance) {
log.debug("saving Cigarette instance");
try {
getSession().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
并不能说这个没有添加事务管理模式,只不过这么写他有的时候灵有的时侯不灵,那我们改为显示的提交事务就成了!
public void save(Cigarette transientInstance) {
log.debug("saving Cigarette instance");
Transaction transaction= getSession().beginTransaction();
try {
getSession().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
transaction.commit();
getSession().flush();
getSession().close();
}
结论:
hibernate成功执行sava且不报错后,数据库中没有数据的原因:hibernate 必须显示的声明提交事务
JDBC默认的是自动提交
Hibernian默认的是手动提交,必须开启事务,手动提交,否则数据库中没有保存的记录:
Transaction transaction= getSession().beginTransaction();
getSession().save(transientInstance);
transaction.commit();
以上总结了网上的资料,自己实践得出结论
分享到:
相关推荐
1. import org.hibernate.Query; 2. 3. query.setFirstResult(0),query.setMaxResults(4);相当于MySQL中的limit 0, 4; 4. public void testQuery() { 5. Session session = null; 6. try { 7. session = ...
at com.chinafi.hibernate.BaseDAO.getSession(BaseDAO.java:13) at com.chinafi.node.NodeAccessDAO.save(NodeAccessDAO.java:25) at com.chinafi.node.NodeAccessAction.execute(NodeAccessAction.java:47) ...
对hibernate的flush机制有兴趣可以看看
request.getSession().doc
Session s= HibernateSessionFactory.getSession(); 就是Hibernate的工具java类
5.连接是单线程的,在整个httpRequest处理过程中是公用的,缓存在HttpContext context中 see ref NHibernateHelper.getSession... 6.增加log4net演示,这是一个强大的log记录组件. 這個免費OR Mapping的工具很強大, ...
import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.cfg.Configuration; /** * Configures and provides access to Hibernate sessions, tied to the * current ...
主要介绍了java 中 request.getSession(true/false/null)的区别的相关资料,需要的朋友可以参考下
type Exception report message description The server encountered an internal error () that prevented it from fulfilling this ... javax.servlet.http.HttpServlet.service(HttpServlet.java:717)解决办法:
再存放到application作用域中 context.setAttribute("count",count2); //http://192.168.58.250:8080/myservlet2/servlet/admin/success.jsp response.sendRedirect("../admin/success.jsp"); }else{ //失败...
数据库连接工厂数据库连接工厂数据库连接工厂数据库连接工厂
smartcard中的代码需要修改,redis放值时不能为空 //保存sysOrg中工号所属地市区县 Struts2Utils.getSession().setAttribute(Constants.JCFX_CITY, orgList.get(0).get("CITY_CODE")); Struts2Utils.getSession()....
private static final String configfile="hibernate.cfg.xml"; private static final Configuration cfg=new Configuration(); private static SessionFactory sf=null; private static Session s=null; ...
ODI API Organization of This Manual ............................................................................................................. 1 Using Substitution Methods............................
Timon 是基于Java的数据库持久工具, 提供SQL Maps以及SQL工具采用XML定义SQL语句支持数据库与Java对象之间的映射 支持外部数据缓存,支持Ehcache,Memcached和内置同步缓存 提供SQL语句解析、格式化工具 安装方式...
session = HibernateSessionFactory.getSession(); tx = session.beginTransaction(); Account acc = (Account)session.get(Account.class, account.getId()); acc.setBalance(new Double(acc.getBalance()....
//保存到Session范围 request.getSession().setAttribute("shoppingCart", SC); // System.out.println("SESSION===================>"+request.getSession().getAttribute("shoppingCart")); request....
在网上经常看到有人对request.getSession(false)提出疑问,我第一次也很迷惑,看了一下J2EE1.3 API,看一下官网是怎么解释的。
session = getSession(); agentContext = session.getAgentContext(); docContext = agentContext.getDocumentContext(); Database cdb = agentContext.getCurrentDatabase(); Agent agent = ...