`

Hibernate 单表的CURD操作

阅读更多

Hibernate

 

使用Hibernate的步骤:

1. 导入jar包
2. 创建表(t_user)的POJO类(User),及POJO与表的映射关系文件(User.hbm.xml)
3. 创建Hibernate配置文件(hibernate.cfg.xml)
4. 调用Hibernate,运行数据库操作

使用Maven进行搭建项目添加如下依赖:

写道
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.5.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>

 

 

t_user表中字段:

写道
id int
username varchar(20)
password varchar(20)



User实体类:

public class User {

    private Integer id;
    private String username;
    private String password;
    
    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 String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    
}



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 table="t_user" name="com.cn.pojo.User">
        <id name="id" column="id">
            <generator class="native"/>    
        </id>
        <property name="username"/>
        <property name="password" column="password"/>
    </class>
</hibernate-mapping> 



class标签内包裹的就是一个POJO与一个表的映射关系。
table属性指示哪一张表。
name属性指示实体类的完全限定名。
id标签表示主键name表示实体类中对应的字段(private Integer id),column表示表中对应的字段(id),id标签内的generator标签表示主键的生成策略,一般是自增的(native),后面会介绍其他的。
property标签表示一般的字段映射,如果实体类中的字段名与表中的字段名相同可以省略column属性。

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="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql:///mydb</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        
        <property name="hibernate.current_session_context_class">thread</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.connection.pool_size">1</property>
            
        <mapping resource="com/cn/pojo/User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>



  • hibernate-configuration标签内配置了hibernate连接数据库的基本配置。
  • session-factory配置连接数据库的数据源及映射等。
  • hibernate.dialect表示方言,指示使用什么数据库。
  • hibernate.connection.driver_class表示数据库驱动。
  • hibernate.connection.url表示数据库地址。
  • hibernate.connection.username连接数据库的用户名。
  • hibernate.connection.password密码。
  • hibernate.current_session_context_class配置session上下文。
  • hibernate.show_sql是否在控制台显示sql语句。
  • hibernate.connection.pool_size数据库连接池的数量。


保存一个User对象:

public static void main(String[] args) {
    Configuration cfg = new Configuration().configure();    
    ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();       
    SessionFactory factory = cfg.buildSessionFactory(serviceRegistry);    
    
    Session session = factory.getCurrentSession();    
    session.beginTransaction();    //数据库操作开始
    
    User user=new User();
    user.setUsername("jack");
    user.setPassword("000000");
    session.save(user);
    
    session.getTransaction().commit(); //数据库操作结束
}

 

对数据库访问的语句在事务中进行。

执行的SQL语句:

写道
insert into t_user (username, password) values (?, ?)

 

根据主键查找对象:

session.beginTransaction();    
        
User user=(User) session.get(User.class, 31);
System.out.println(user.getUsername());

session.getTransaction().commit(); 

 
执行的SQL语句:

写道
select user0_.id as id1_0_0_, user0_.username as username2_0_0_, user0_.password as password3_0_0_ from t_user user0_ where user0_.id=?

 

修改对象:

User user=(User) session.get(User.class, 31);
user.setPassword("111111");

 

执行的SQL语句:

写道
Hibernate: select user0_.id as id1_0_0_, user0_.username as username2_0_0_, user0_.password as password3_0_0_ from t_user user0_ where user0_.id=?
Hibernate: update t_user set username=?, password=? where id=?

 

删除对象:

User user=(User) session.get(User.class, 31);
session.delete(user);

 

执行的SQL语句:

写道
Hibernate: select user0_.id as id1_0_0_, user0_.username as username2_0_0_, user0_.password as password3_0_0_ from t_user user0_ where user0_.id=?
Hibernate: delete from t_user where id=?

 

查找所有的对象:

Query query=session.createQuery("from User");
List<User> userList=query.list();
System.out.println(userList.size());

 

注意:
from后跟的是POJO,而不是t_user。

执行的SQL语句:

写道
Hibernate: select user0_.id as id1_0_, user0_.username as username2_0_, user0_.password as password3_0_ from t_user user0_

 

  • 大小: 43 KB
分享到:
评论

相关推荐

    Struts2+Hibernate+Spring整合与增、删、改、查CURD操作

    Struts2+Hibernate+Spring整合与增、删、改、查CURD操作源码

    Tapestry5.1+Spring2.5.6+Hibernate3.2.5写得简单CURD的程序

    Tapestry5.1+Spring2.5.6+Hibernate3.2.5写得简单CURD的程序,借鉴了SpringSide3.1.4.2的配置及数据层。实现了添加,列表,修改,删除,显示等操作。内有源码及生成的WAR文件。可以直接使用!

    struts2与hibernate的整合实现数据的crud

    struts2与hibernate的整合实现数据的crud操作,还有复选框删除的实例,运用了Jquery的技术。 里面有使用需知,欢迎大家下载。

    mybatis-plus代码生成器

    Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。(摘自mybatis-plus官网...它提供了Hibernate的单表CURD操作的方便同时,又保留了Mybatis的特性。

    hibernate之一对多配置demo

    详细讲解了hibernate 的多对一xml配置以及curd操作,讲解了级联操作,适合初学者学习

    spring+hibernate+struts小项目

    是基于spring+hibernate+struts的curd操作的小项目!

    mybatis-mapper:mybatis单表通用CURD插件和分页插件

    发现一些通用的操作,比如单表的CURD,在每一个xml文件中都需要定义一遍。而且每个人写的风格又不统一。于是寻找了一个解决 办法,使用maven插件mybatis-generator。使用一段时间之后,发现还是不能令人满意。每次...

    最新修订:基于java泛型的通用DAO(CURD)实现

    现在无论做什么应用,基本上都会有涉及对象持久化这方面的操作。通常创建大量的DAO对象是我们开发过程中最常见的操作了。创建DAO对象的优点主要体现在提高代码复用和降低...下面DAO的实现以Hibernate为基础加以演示。

    基于java泛型的通用DAO(CURD)实现

    现在无论做什么应用,基本上都会有涉及对象持久化这方面的操作。通常创建大量的DAO对象是我们开发过程中最常见的操作了。创建DAO对象的优点主要体现在提高代码复用和降低...下面DAO的实现以Hibernate为基础加以演示。

    javaWeb_struts2框架实现简单用户注册登录

    2.数据库操作使用c3p0连接池和dbtuils组件,对表的CURD,二者搭配感觉很easy,没有使用hibernate。 3.控制器采用action开发,替代传统的servlet,直接跳转页面返回一个字符串即可,需配置struts.xml对应的jsp。 4....

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    例如数据表中用户选择字段方式的改变,用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要...

    FeeManagment-SpringBoot:用于学习目的的Springboot演示项目

    内存版本中只有一个Admin用户可以添加会计师和学生,并执行CURD操作并根据姓名,电子邮件等进行搜索。 每个会计师都可以将学生添加到他们的课程中,并执行CRUD操作并根据姓名,电子邮件等进行搜索。内存中身份验证...

    JavaProject:简单的Java练习项目

    涉及知识包含类与接口,继承与多态,集合类,JavaFx图形界面,文件IO操作,多线程,Socket流编程,正则表达式等。 完成于:2017-06-04 2.store 基于jsp/servlet+javabean+c3p0开发的简单商城管理系统。采用视图层...

Global site tag (gtag.js) - Google Analytics