Hibernate的数据库操作

1、编写数据库表users对应的实体类Users.java

package com.hibtest1.entity;

import java.io.Serializable;

public class Users implements Serializable {
	private Integer id;         
	private String loginName;   
	private String loginPwd;    
	
	public Users() {		
	}
	public Integer getId() {    
		return id;
	}
	public void setId(Integer id) {   
		this.id = id;
	}
	public String getLoginName() {    
		return loginName;
	}
	public void setLoginName(String loginName) {   
		this.loginName = loginName;
	}
	public String getLoginPwd() {
		return loginPwd;
	}
	public void setLoginPwd(String loginPwd) {
		this.loginPwd = loginPwd;
	}

}


2、编写映射文件Users.hbm.xml,告知hibernate框架实体类Users映射到数据库中的哪个表,以及哪个属性对应的哪个字段

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="com.hibtest1.entity.Users" table="users" catalog="bookshop"><!-- 配置一个实体类的映射信息,name=实体类的名字,table=数据库表的名字 -->     
     <id name="id" type="java.lang.Integer">  <!-- <id></id>=对应数据库的主键   name=对应实体类(users.java)的属性  type=该属性的Java类(users.java)型-->
         <column name="Id" /><!-- 指定对应数据库表的主键 -->
         <generator class="native"></generator><!-- 指定数据库主键的生成策略 自增字段(native) -->
     </id>
     <property name="loginName" type="java.lang.String"><!-- 指定一对属性和字段的对应关系 -->
         <column name="LoginName" length="50" /><!-- 相应的数据库字段名 -->
     </property>
     <property name="loginPwd" type="java.lang.String">
         <column name="LoginPwd" length="16" />
     </property>
 </class>
</hibernate-mapping>

3、在项目的src目录下添加hibernate配置文件,默认文件名为hibernate.cfg.xml
<pre name="code" class="html"><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>

<!-- 该配置文件中需要配置数据库的连接信息和hibernate的参数 -->

<session-factory>
	<property name="show_sql">true</property><!-- 程序运行时在控制台输出(true)执行的sql语句 -->
	<property name="myeclipse.connection.profile">bookshop</property><!-- 连接的数据库名 -->
	<property name="connection.url"><!-- 定义数据库连接URL -->
		jdbc:mysql://localhost:3306/bookshop
	</property>
	<property name="connection.username">root</property><!-- 数据库名 -->
	<property name="connection.password">123456</property><!-- 数据库密码 -->
	<property name="connection.driver_class"><!-- 定义数据库驱动类 -->
		com.mysql.jdbc.Driver
	</property>
	<property name="dialect"><!-- 用于配置hibernate使用的不同数据库类型 -->
		org.hibernate.dialect.MySQLDialect
	</property>
	<mapping resource="com/hibtest1/entity/Users.hbm.xml" /><!-- 配置实体类和数据表的映射信息的映射文件需要在此声明 -->
</session-factory>
</hibernate-configuration>



4、新建TestAdd.java 测试添加数据

package com.hibtest1;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.hibtest1.entity.Users;


public class TestAdd {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new TestAdd().addUser();
	}	
	private void addUser(){
		//建立持久化对象
		Users user=new Users();
		//可从前台获取值后 在执行set方法
		user.setLoginName("zhangsan");
		user.setLoginPwd("123456");
		//1.初始化,读取配置文件 hibernate.cfg.xml
		Configuration config=new Configuration().configure();
		//2.读取创建 sessionFactory
		SessionFactory sessionFactory=config.buildSessionFactory();
		//3.打开 session
		Session session=sessionFactory.openSession();
		Transaction tx=null;
		try {			
			tx=session.beginTransaction();    //4.开始一个事务		
			session.save(user);		 //5.持久化操作
			tx.commit();    //6.提交事务
		} catch (Exception e) {
			if(tx!=null){
				tx.rollback();  //事务回滚			
			}	
			e.printStackTrace();
		}finally{
			session.close();   //7.关闭 session
		}		
	}
}


5、测试加载数据,新建TestLoad.java

package com.hibtest1;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.hibtest1.entity.Users;

public class TestLoad {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new TestLoad().testLoad();
	}

	private void testLoad() {
		// 1.初始化,读取配置文件 hibernate.cfg.xml
		Configuration config = new Configuration().configure();
		// 2.读取创建 sessionFactory
		SessionFactory sessionFactory = config.buildSessionFactory();
		// 3.打开 session
		Session session = sessionFactory.openSession();
		// 4.加载数据
		Users user = (Users) session.get(Users.class, new Integer(1));
		// 控制台输出用户名密码
		System.out.println(user.getLoginName() + " " + user.getLoginPwd());
	}

}
5、测试删除数据,新建TestDelete.java

package com.hibtest1;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.hibtest1.entity.Users;

public class TestDelete {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new TestDelete().testDelete();
	}
	private void testDelete(){
		Configuration config=new Configuration().configure();
		SessionFactory sessionFactory=config.buildSessionFactory();		
		Session session=sessionFactory.openSession();
		Transaction tx=null;		
		Users user=(Users)session.get(Users.class, new Integer(1));
		try {
			tx=session.beginTransaction();   		
			session.delete(user);            
			tx.commit();                    
		} catch (Exception e) {
			if(tx!=null){
				tx.rollback();     				
			}
			e.printStackTrace();
		}finally{
			session.close();  
		}	
		
	}

}

6、测试修改数据

package com.hibtest1;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.hibtest1.entity.Users;

public class TestUpdate {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new TestUpdate().testUpdate();
	}
	private void testUpdate(){
		Configuration config=new Configuration().configure();
		SessionFactory sessionFactory=config.buildSessionFactory();
		Session session=sessionFactory.openSession();
		Transaction tx=null;
		Users user=(Users)session.get(Users.class, new Integer(2));
		user.setLoginName("popopo");
		try {
			tx=session.beginTransaction();   		
			session.update(user);             
			tx.commit();                     
		} catch (Exception e) {
			if(tx!=null){
				tx.rollback();       				
			}
			e.printStackTrace();
		}finally{
			session.close();  
		}
	}

}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值