菜鸟第一次写 多多见谅
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()进行增删改查
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 static 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>