小白记录~hibernate旧石器时代方法buildSessionFactory();连接MySQL方法
2017-03-13 18:08
459 查看
菜鸟第一次写 多多见谅
Save方法的执行流程:
1. 新建一个Configuration对象
2. 利用方法Configuration.configure()加载`hibernate.cfg.xml`文件
3. 根据hibernate.cfg.xml中的配置连接数据库,并配置相关的property属性
4. 加载解析映射文件, 把映射文件中的信息保存在Configuration对象中
5. 根据config创建SessionFactory对象,
并创建session对象
6. 调用session中的save(),delete(),update(),get();createQuery()进行增删改查
所需要JAR包
![](https://oscdn.geek-share.com/Uploads/Images/Content/201703/13/05d039059cc78e2cd012f45cbb479148)
废话不多说 上代码
获取Session
Student类
StudentDao接口
StudentDaoIMPL实现类
Student.hbm.xml
hibernate.cfg.xml
Save方法的执行流程:
1. 新建一个Configuration对象
2. 利用方法Configuration.configure()加载`hibernate.cfg.xml`文件
3. 根据hibernate.cfg.xml中的配置连接数据库,并配置相关的property属性
4. 加载解析映射文件, 把映射文件中的信息保存在Configuration对象中
5. 根据config创建SessionFactory对象,
并创建session对象
6. 调用session中的save(),delete(),update(),get();createQuery()进行增删改查
所需要JAR包
废话不多说 上代码
获取Session
package com.gxxy.student.util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; @SuppressWarnings("deprecation") public class HibernateUitl { static SessionFactory sessionFactory; static{ //将buildSessionFactory();放入静态代码块 sessionFactory = new Configuration().configure().buildSessionFactory(); //ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(configure.getProperties()).buildServiceRegistry(); //Session session=configure.buildSessionFactory(sr).openSession(); } //取得Session对象 public sta 4000 tic Session getSession(){ return sessionFactory.openSession(); } }
Student类
package com.gxxy.student.domain; public class Student { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Student(int id) { this.id = id; } public Student() {} @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
StudentDao接口
package com.gxxy.student.dao; import java.util.List; import com.gxxy.student.domain.Student; public interface StudentDao { /** * 增加数据 */ public void save(Student s); /** * 删除数据 */ public void delete(Student s); /** * 修改数据 */ public void update(Student s); /** * 查询一条数据 */ public Student get(Student s); /** * 查询所有数据 */ public List<Student> list(); }
StudentDaoIMPL实现类
package com.gxxy.student.daoimpl; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import com.gxxy.student.dao.StudentDao; import com.gxxy.student.domain.Student; import com.gxxy.student.util.HibernateUitl; public class StudentDaoIMPL implements StudentDao{ //具体的调用Sisson中的方法 @Override public void save(Student s) { Session session = HibernateUitl.getSession();
//改变数据库内容时必须调用事务 session.beginTransaction(); session.save(s); session.getTransaction().commit(); session.close(); } @Override public void delete(Student s) { Session session = HibernateUitl.getSession(); session.beginTransaction(); session.delete(s); session.getTransaction().commit(); session.close(); } @Override public void update(Student s) { Session session = HibernateUitl.getSession(); session.beginTransaction(); session.update(s); session.getTransaction().commit(); session.close(); } @Override public Student get(Student s) { Session session = HibernateUitl.getSession(); Student student= (Student) session.get(s.getClass(), s.getId()); session.close(); return student; } @Override public List<Student> list() { Session session = HibernateUitl.getSession(); Query query = session.createQuery("SELECT stu FROM Student stu"); @SuppressWarnings("unchecked") List<Student> list = query.list(); return list; } }
Student.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
<!-- 链接Student类与表的名字 --> <class name="com.gxxy.student.domain.Student" table="Student"> <id name="id" column="s_id"><!-- 设置id为主键,根据它去取得数据 --> <generator class="native"></generator> </id><!-- 设置Student对象与表中字段一一对应 --> <property name="name" column="s_name"/> <property name="age" column="s_age"/> </class> </hibernate-mapping>
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory><!-- 在控制台打印Hibernate自动生成的SQL语句 --> <property name="show_sql">true</property>
<!-- 设置连接数据库的四大参数 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///test</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property>
<!-- 导入映射文件 --> <mapping resource="com/gxxy/student/domain/Student.hbm.xml"/> </session-factory> </hibernate-configuration>
相关文章推荐
- hibernate 4中buildSessionFactory() 方法过时的替换方法
- Hibernate使用configuration调用buildFactory()或得session连接数据库
- hibernate 4为什么用buildSessionFactory(ServiceRegistry serviceRegistry) 来代替buildSessionFactory()
- mysql连接数据库的三种方法(连接池,jdbc,Hibernate)
- mysql 修改密码忘记使用password函数导致后面无法连接,解决方法记录
- [解决方法]Eclipse连接mysql失败:Error1682:Native table 'performance_schma'.'session_variables'
- jpa整合spring和springData出错: Unable to build Hibernate SessionFactory
- Could not open Hibernate Session for transaction, 数据库连接超时解决方法
- hibernate 4.x buildSessionFactory 的使用
- hibernate SessionFactory的获取方法
- [Hibernate]关于Hibernate buildsessionfactory()过时处理
- Hibernate: Session对象中的两个保存记录的方法 save vs. persist
- Could not open Hibernate Session for transaction, 数据库连接超时解决方法
- Spring注解方式,异常 'sessionFactory' or 'hibernateTemplate' is required的解决方法 转载的
- Hibernate4.3.8 buildSessionFactory过时解决方案HibernateUtil
- [记录]JPA/Hibernate的MySQL长连接问题
- Hibernate创建buildSessionFactory()之后的代码都不执行
- Hibernate 4中buildSessionFactory()过时
- Could not open Hibernate Session for transaction, 数据库连接超时解决方法
- 解决 Springboot Unable to build Hibernate SessionFactory @Column命名不起作用