`

hibernate的初体验

阅读更多
 
 hibernate初级入门,实现增删改查
1. 添加数据库表user
CREATE TABLE user (
   id  int(11) NOT NULL AUTO_INCREMENT ,
   username  varchar(50)  DEFAULT NULL ,
   age  int(11) DEFAULT NULL ,
   PRIMARY KEY (id)
);
2.创建pojo类User.java
 
package com.bobo.domain;
import java.io.Serializable;
//domain对象/JavaBean/pojo (plain old/ordinary java object)简单java对象
//hibernate需要序列化对象 这样可以唯一的对应数据库的一条记录
public class User implements Serializable{
 private static final long serialVersionUID = 1L;
 private Integer id;
 private String userName;
 private Integer age;
 public Integer getId() {
  return id;
 }
 public void setId(Integer id) {
  this.id = id;
 }
 public String getUserName() {
  return userName;
 }
 public void setUserName(String userName) {
  this.userName = userName;
 }
 public Integer getAge() {
  return age;
 }
 public void setAge(Integer age) {
  this.age = age;
 }
}
3.配置user表和对象User的关系映射配置,配置文件:User.hbm.xml
 <?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping >
        <class name="com.bobo.domain.User">
         <id name="id" column="id" type="java.lang.Integer">
             <!--主键生成策略-->
             <generator class="increment"></generator>
        </id>
       <property name="userName" column="username" type="java.lang.String"/>
       <property name="age" column="age" type="java.lang.Integer"/>
</class>
</hibernate-mapping>
 
4.配置hibernate的核心文件hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!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>
       <!---->
      <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
      <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
      <property name="connection.url">jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&amp;characterEncoding=utf-8</property>
      <property name="connection.username">root</property>
      <property name="connection.password">root</property>
  
      <property name="show_sql">true</property>
      <!--加载类与数据库表映射配置-->
      <mapping resource="com/bobo/domain/User.hbm.xml"/>
 </session-factory> 
</hibernate-configuration>       
5.初始化配置文件的工具类
package com.bobo.util;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
 * 初始化配置工具类,获取MySessionFactory对象,确保只有一个,因为它很好资源 
 *
 */
final public class MySessionFactory {
    private static SessionFactory sessionFactory = null;
    private MySessionFactory(){
    }
    static{
      sessionFactory = new Configuration().configure().buildSessionFactory();
    }   
    public static SessionFactory getSessionFactory(){
        return sessionFactory;
    }
}
 6.写测试类TestMain.java
package com.bobo.view;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.*;
import com.bobo.domain.User;
import com.bobo.util.MySessionFactory;
public class TestMain {
 public static void main(String[] args) {
  //添加用户
  //addUser();
  //更新用户
  updateUser();
  
 }
 //删除用户
 public static void deleteUser() {
     Session session = MySessionFactory.getSessionFactory().openSession();
     Transaction tx = session.beginTransaction();
     User user = (User)session.load(User.class, 3);
     session.delete(user); //删除操作 delete from User where id=?
     tx.commit();
     session.close();
 }
 //更新用户
 public static void updateUser() {
     SessionFactory sessionFactory = MySessionFactory.getSessionFactory();
    Session session = sessionFactory.openSession();
    Transaction tx = null;
    try{
         tx = session.beginTransaction();
         User user = (User) session.load(User.class, 3);//执行select 操作select user0_.id as id1_0_0_, user0_.username as username2_0_0_, user0_.age as age3_0_0_ from User user0_ where user0_.id=?
         user.setAge(19);//执行了update操作 update User set username=?, age=? where id=?
         tx.commit();
  }catch(Exception e){
        if(tx != null) tx.rollback();
        throw new RuntimeException(e.getMessage());
  }finally{
     if(session != null && session.isOpen())
      session.close();
  }
 }
 //添加用户
 public static void addUser() {
      //1.初始化hibernate配置
      Configuration cfg = new Configuration().configure();
     //2.创建一个SessionFactory
     SessionFactory sessionFactory = cfg.buildSessionFactory();
     //3.获取一个session对象
     Session session = sessionFactory.openSession();
     //4.开启事务
     Transaction tx = session.beginTransaction();
     //5.插入操作
     User user = new User();
     user.setUserName("bobo");
     user.setAge(20);
     session.save(user);
     //6.提交事务
     tx.commit();
     //7.关闭资源
    session.close();
  }
}
 

 

 

0
0
分享到:
评论

相关推荐

    Hibernate初体验及简单错误排除代码详解

    主要介绍了Hibernate初体验及简单错误排除代码详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

    Hibernate1

    对 Hibernate 初体验 1.新建一个java工程,工程名为Hiberante1 2.导入相应的jar包 1)hibernate需要导入这些包 2)因为我们需要操作数据库所以要导入数据库的包,我用的mysql数据库 3.创建数据库以及表 ...

    Spring+Hibernate+Acegi 的初次体验

    应用Acegi框架开发J2EE安全的实例!

    Hibernate Service Register机制初体验

    NULL 博文链接:https://weizhilizhiwei.iteye.com/blog/2029392

    JPA学习笔记-EJB-01JPA初体验

    学习中使用的持久层技术 是 EJB,JPA 注解方式,底层应用的是 Hibernate 实现和 MySql 数据库,应用服务器采 用的是 JBoss 4.2.0。随着笔者的学习笔记,大家一起学习吧,还是那句话,有什么问题 大家一起探讨。有...

    java从入门到精通70个PPT

    19 Jsp与动态网站初体验 20 状态管理 21 JSTL和EL 22 JSP综合运用 23-24 项目案例:论坛短消息 25-26 项目案例:电子书城 27 Servlet基础 28 servlet应用 29 JSP+Servlet+JavaBean 30自定义MVC框架 31 指导学习:...

    SSH相关整合的总要资料

    SSH初体验 1 什么是SSH 都说Y2学年J2EE方向的学习重点是SSH框架的掌握。那么什么是SSH呢?是否真的开发J2EE大型框架很难呢?今天我们将通过一个实例,在常用IDE—Eclipse3.2.2+MyEclipse5.5.1+Tomcat6.0的基础之上给...

    Eclipse开发入门与项目实践 源代码

    2.1 Java项目开发初体验 11 2.1.1 新建Java项目 12 2.1.2 导入外部Java类 16 案例2-1 随机抽奖程序的实现 18 2.1.3 打开及关闭已有Java项目 22 2.2 Eclipse中编写Java程序的技巧 24 2.2.1 新建Java类 ...

    JessMA Java Web 应用开发框架 (v3.2.2-20130815).pdf

    JessMA在设计之初就充分注重功能、性能与使用体验。JessMA主要特点: 1) 功能全面:内置稳定高效的MVC基础架构和DAO框架,支持Action拦截、Form Bean / Dao Bean / Spring Bean装配和声明式事务,提供国际化、文件...

    基本于J2EE的Ajax宝典.rar

    第 2章 Ajax 初体验 5 2.1 Ajax带来的优势 5 2.2 传统的 JSP 聊天室 6 2.2.1 实现业务逻辑组件 7 2.2.2 实现控制器 11 2.2.3 实现视图 12 2.2.4 JSP聊天室的问题 14 2.3 Ajax聊天室 14 2.3.1 异步发送请求 ...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、Hibernate高级应用...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理Struts和Hibernate。 WebStorage HTML新增的本地存储解决...

Global site tag (gtag.js) - Google Analytics