ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于Hibernate实现CRUD

2021-06-15 00:00:57  阅读:159  来源: 互联网

标签:基于 Hibernate void CRUD Teacher teacher teacherdao null public


一个简单的练习项目:基于Hibernate实现CRUD

共有两个表,Teacher表、College表。单向的多对一映射关系。以下是我的代码实现。

1.项目的目录结构:

2.HibernateUtil.java:

//SessionFaction单态模式
public class HibernateUtil {
	private static SessionFactory sf=null;
	private static Configuration cfg=null;
	static {//在类加载的时候只能加载一次
		try {
			cfg = new Configuration().configure();
			sf=cfg.buildSessionFactory();
		} catch (HibernateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static SessionFactory getSessionFactory() {
		return sf;
	}
	public static void closeSessionFactory(){
		sf.close();
	}
}

3.Hibernate.cfg.xml:

<hibernate-configuration>
	<session-factory >
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
		<property name="hibernate.connection.driver_class ">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernateTest?useSSL=false</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password"> </property>
		<property name="show_sql">true</property>
		<!-- 保证每个读写线程有唯一的session实例 -->
		<property name="hibernate.current_session_context_class">thread</property>
		<mapping resource="cn/hrbust/pojo/Teacher.hbm.xml"/>
		<mapping resource="cn/hrbust/pojo/College.hbm.xml"/>
		
	</session-factory>
</hibernate-configuration>

4.Teacher.hbm.xml

<hibernate-mapping>
    <class name="cn.hrbust.pojo.Teacher" table="T_Teacher" select-before-update="true" dynamic-update="true">
        <id name="id" column="id">
            <generator class="native"/>
        </id>
        <property name="name"/>
        <property name="gender"/>
        <property name="age"/> 
        <property name="course"/>
        <property name="phone"/>
       	<many-to-one name="college" column="collegeid" class="cn.hrbust.pojo.College" cascade="save"  not-null="true" />
    </class>
   
		
</hibernate-mapping>

5.College.hbm.xml

<hibernate-mapping>
    <class name="cn.hrbust.pojo.College" table="T_College" select-before-update="true" dynamic-update="true">
        <id name="id" column="id">
            <generator class="native"/>
        </id>
        <property name="name" column="name" />
   
    </class>
</hibernate-mapping>

6.Dao层接口

public interface TeacherDao {
	void addTeacher(Teacher t);
	void deleteTeacher(int id);
	void updateTeacher(Teacher t,College c);
	List<Teacher> queryTeacher();
}

7.Dao层的实现类

public class TeacherDaoImpl implements TeacherDao {
	private SessionFactory sf = HibernateUtil.getSessionFactory();
	private Session session = sf.getCurrentSession();
	private Transaction ts = session.beginTransaction();
	private Query query = null;

	@Override
	public void addTeacher(Teacher t) {
		// TODO Auto-generated method stub
		session.save(t);
		ts.commit();

	}

	@Override
	public void deleteTeacher(int id) {
		// TODO Auto-generated method stub
		Teacher teacher = session.get(Teacher.class, id);//先获得对象
		session.delete(teacher);//再删除对象
		ts.commit();

	}

	@Override
	public void updateTeacher(Teacher t,College c) {
		// TODO Auto-generated method stub
		Teacher teacher =new Teacher();
		teacher.setId(t.getId());
		teacher.setName(t.getName());
		teacher.setName(t.getName());
		teacher.setGender(t.getGender());
		teacher.setAge(t.getAge());
		teacher.setCourse(t.getCourse());
		teacher.setPhone(t.getPhone());
		teacher.setCollege(t.getCollege());
		session.update(teacher);
		ts.commit();

	}

	@Override
	public List<Teacher> queryTeacher() {
		// TODO Auto-generated method stub
		query = session.createQuery(" from Teacher");
		List<Teacher> list = query.list();
		return list;

	}

}

8.测试类:

public class manageTeacher extends TestCase{
	public void testAdd() {
		TeacherDao teacherdao = null;
		Teacher teacher = null;
		try {
			
			teacherdao = new TeacherDaoImpl();
			
			College c=new College();
			c.setName("哈尔滨理工大学");

			Teacher t=new Teacher();
			t.setName("小美");
			t.setGender("女");
			t.setAge(33);
			t.setCourse("工科");
			t.setPhone(1234566666);
			t.setCollege(c);
			teacherdao.addTeacher(t);
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			
		}
		
	}
	
	public void testDelete(){
		TeacherDao teacherdao = null;
		Teacher teacher = null;
		try {
			
			teacherdao = new TeacherDaoImpl();
			teacherdao.deleteTeacher(14);
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			
		}
	}

	public void testUpdate() {
		TeacherDao teacherdao = null;
		Teacher teacher = null;
		try {
			
			teacherdao = new TeacherDaoImpl();
			College c=new College();
			c.setName("哈尔滨理工大学");

			Teacher t=new Teacher();
			t.setId(13);
			t.setName("小美老师");
			t.setGender("女");
			t.setAge(28);
			t.setCourse("工科");
			t.setPhone(88888888);
			t.setCollege(c);
	
			teacherdao.updateTeacher(t,c);
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			
		}
		
	}
	
	public void testQuery() {
		TeacherDao teacherdao = null;
		Teacher teacher = null;
		try {
			
			teacherdao = new TeacherDaoImpl();
	
			List<Teacher> teachers = teacherdao.queryTeacher();
			for (int i=0;i<teachers.size();i++) { 
				Teacher t=(Teacher)teachers.get(i);
				System.out.println(t.getName()+" —— "+t.getGender()+" —— "+t.getAge()+" —— "+t.getCourse()+" —— "+t.getPhone()+" —— "+"所属学校:"+t.getCollege().getName());
			}
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			
		}	
	}
}

实验结果:

增加操作:

删除操作

删除前:

删除后:

修改操作

修改前:

修改后:

查询操作

 

标签:基于,Hibernate,void,CRUD,Teacher,teacher,teacherdao,null,public
来源: https://blog.csdn.net/qq_42962315/article/details/117914222

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有