求大神讲解下 |
|
public class Main {
public static void main(String[] args) { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Student student = new Student(); student.setAge(11); student.setName(“save”); student.setSex(“男”); student.setAcademicYear(“99999”); Session session = sessionFactory.getCurrentSession(); Transaction ts = session.beginTransaction(); session.save(student); } } |
|
貌似明白了 只要打印出 sql语句就 执行到数据库了?
Hibernate: insert into student (_name, _age, _sex, _academicYear, _id) values (?, ?, ?, ?, ?) 我把student.hbm.xml 中的 |
|
1分 |
不配置主键生成策略会报错吧???
|
1分 |
大家顶起来了啊
一直理解<generator class=”native”/>只是主键生成策略,为了便于移植底层数据库才用native的吗?怎么会和事务有关系 需要测试下 |
不会报错呀 我怎么在你留言上回复?
|
|
1分 |
你是getCurrentSession的话自动提交
但是你后面说的那种情况很奇怪,照理说和主键木有关系啊 等大神解释 |
我测试下 getCurrentSession 改成openSession 试试 谢谢
|
|
public static void main(String[] args) {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Student student = new Student(); student.setAge(11); student.setName(“save”); student.setSex(“男”); student.setAcademicYear(“99999”); //Session session = sessionFactory.getCurrentSession(); Session session = sessionFactory.openSession(); Transaction ts = session.beginTransaction(); //Student student2 = (Student)session.load(Student.class, 1); //System.out.println(student2.getName()); session.save(student); //ts.commit(); } 貌似不行 |
|
1分 |
Hibernate都到4了,是该学习了
|
1分 |
我前几天用4.1.8 session不是你这样取的啊!
|
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction(); Event theEvent = new Event(); session.getTransaction().commit(); |
|
1分 |
去试试了,
|
43分 |
你会结贴不呢?
原因是数据源conn默认的提交方式,hibernate封装的jdbc,因为jdbc默认是的conn提交方式是true public static void main(String[] args) throws Exception { SessionFactory sf=HibernateSessionFactory.getSessionFactory(); Session session=sf.openSession(); System.out.println(session.connection().getAutoCommit()); session.connection().setAutoCommit(false); User u=new User(); u.setName("aaa"); session.save(u); } |
1分 |
hibernate4 好像变动很大、
要看你hibernate文件是如何配置事务的、 getCurrentSession();这样获取的session是就可以不用手动关闭了、 其实跟session有关、 我的猜测是 getCurrentSession() 获取到了你配置的事务、 以上也都是个人猜测而已、没有看hibernate4的源码、只晓得hibernate4相比hibernate3变动挺大的 |
该结贴 了
总结下 测试的程序 SessionFactory sessionFactory = HibernateUtil.getAnnotationSessionFactory(); 还有 我用了Annotation后 只save()不commit() 数据库里没有内容。用xml会有内容 可能是 scottxzj 说的吧 我在试试结贴 |
|
session.connection() 在 4.1.8 中已废除了 郁闷
|
|
失误 没有结贴 测试 失败!
try { System.out.println(session.connection().getAutoCommit()); session.connection().setAutoCommit(false); } catch (HibernateException e1) { e1.printStackTrace(); } catch (SQLException e1) { e1.printStackTrace(); } 测试结果 false Hibernate: insert into Wife (name) values (?) Hibernate: insert into Husband (myWife_id, name) values (?, ?) |
|
我想知道SSH中是怎么管理事物的
|