`

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
分享到:
评论

相关推荐

    Hibernate构建一个CURD的程序

    在IT行业中,Hibernate是一个非常重要的Java持久化框架,它简化了数据库操作,使得开发者能够更加专注于业务逻辑,而不是底层的数据存取细节。本教程将深入探讨如何使用Hibernate构建一个完整的CRUD(创建、读取、...

    springMVC+spring3=hibernate4整合的CURD项目

    Hibernate 4 则负责数据的持久化,通过配置文件或注解将实体类映射到数据库表,提供查询和CRUD操作。在SSH整合中,Spring可以通过SessionFactory获取Session,然后通过Session进行数据操作。同时,Hibernate还支持...

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

    5. **实现 CURD**:在Service或DAO层,使用Hibernate的Session接口进行CRUD操作,如Session.save()、Session.get()、Session.update()、Session.delete()。 6. **错误和异常处理**:使用Spring的AOP功能,可以全局...

    Struts、Hibernate、Spring实现CURD所用Jar包(Lib1)

    在实现CURD操作时,Spring的IoC(控制反转)和DI(依赖注入)特性尤其关键。Lib1中的Spring相关Jar包可能有spring-beans、spring-context、spring-jdbc、spring-tx等,这些都是Spring框架的重要组成部分。 使用这三...

    struts2+hibernate整合 练习之CURD 完整版

    "CURD"代表创建(Create)、读取(Read)、更新(Update)和删除(Delete),这是任何数据库操作的基础,也是Web应用程序中最常见的功能。 首先,你需要理解Struts2的核心概念,如Action、Result和Interceptor。...

    所有使用数据库的Web应用都\"just CURD Apps(只是CURD应用)

    在描述中提到的博文链接虽然没有提供具体内容,但我们可以推测博主可能在探讨如何通过优化CURD操作提升Web应用的性能,或者讨论如何在CURD基础上构建更复杂的功能。他们可能强调了尽管大部分Web应用的核心是CURD,但...

    hibernate_OneToMany_CURD_demo_and_note

    标题“hibernate_OneToMany_CURD_demo_and_note”暗示了这是一个关于Hibernate框架中一对一(OneToOne)、一对多(OneToMany)关系映射的CRUD操作(创建、读取、更新、删除)的示例和注释。这篇内容可能包含了如何在...

    Struts2+Hibernate实现新闻发布系统

    Hibernate简化了数据库操作,通过将Java对象映射到数据库表,实现了对象和关系数据之间的无缝转换。在新闻发布系统中,Hibernate可能被用来创建News实体类,该类对应数据库中的新闻表,包含字段如news_id(新闻ID)...

    spring3+hibernate4+maven=springMVC(curd)

    本项目"spring3+hibernate4+maven=springMVC(curd)"整合了这三个框架,创建了一个基于Spring MVC的CRUD(创建、读取、更新、删除)应用。下面将详细介绍这些技术和它们在项目中的应用。 **Spring 3** 是一个全面的...

    使用Mysql+Maven+Hibernate的一对一,一对多的CURD小案例

    CURD操作的核心在于SessionFactory的创建,Session的打开和关闭,以及Transaction的管理。通过Session,我们可以执行HQL(Hibernate Query Language)或SQL查询,进行对象的保存、更新和删除。例如,`session.save...

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

    4. **创建实体类**:根据数据库表结构,创建对应的Java实体类,并使用Hibernate的注解进行ORM(对象关系映射)配置。 5. **DAO层设计**:创建Hibernate的Data Access Object(DAO)接口和实现类,这里包含对数据库...

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

    《Tapestry5.1+Spring2.5.6+Hibernate3.2.5构建的简单CURD程序解析》 在Web开发领域,利用成熟的技术框架进行应用搭建是常见的实践方式。本文将深入探讨如何使用Tapestry5.1、Spring2.5.6和Hibernate3.2.5这三个...

    postgreSQL的CURD和存储过程

    本文将深入探讨PostgreSQL中的CURD操作以及存储过程,并结合jdbc、hibernate、ibatis三种不同的Java数据访问技术进行讲解。 **一、CURD操作** 1. **创建(Create)**:在PostgreSQL中,创建表是最基本的操作。例如,...

    spring boot项目中使用Jpa对mySql数据库进行CURD操作

    spring.jpa.hibernate.ddl-auto=update ``` 接下来,定义实体类(Entity),例如,我们创建一个名为`User`的实体: ```java import javax.persistence.Entity; import javax.persistence.GeneratedValue; import ...

    Hibernate3框架系列 [ 1 ]

    总结来说,本系列文章将带领读者从零开始搭建Hibernate3环境,理解其配置细节,并通过实例演示如何利用Hibernate实现数据库的CURD操作。这不仅是对Hibernate3基本功能的掌握,也为后续深入学习和应用ORM框架奠定了...

    java后台+easyui完整curd

    Java后台结合EasyUI实现CURD操作是Web应用开发中常见的需求,主要涉及到Java后端编程、数据库操作以及前端用户界面的设计。在这个项目中,“java后台+easyui完整curd”是一个利用Java技术和EasyUI框架构建的简单但...

    mybatis常用操作-curd操作

    - Hibernate 是一个完整的ORM框架,它自动将对象模型转换为关系模型的操作,提供了对象和数据库表之间的映射。这使得程序员无需直接编写SQL,降低了开发门槛,但可能导致SQL优化困难。适合于中小型项目,尤其是需求...

    S2 + S + H CURD

    由于没有具体的压缩包文件内容,无法详细展开介绍,但根据标题和标签,我们可以预想这可能是一个关于如何整合Spring Boot、Spring Cloud和Hibernate实现高效CURD操作的教程,其中可能包括代码示例、配置详解以及可能...

    传智播客李勇hibernate

    - 单表继承、联合表继承、子类表继承,根据需求选择合适的映射策略。 7. **集合映射**: - List、Set、Map等集合类型与数据库表的映射,处理关联关系的集合操作。 8. **懒加载**: - 提高性能,延迟加载关联...

Global site tag (gtag.js) - Google Analytics