Java web Hibernate如何与数据库链接

Java web是一种使用Java编程语言开发web应用程序的技术,Hibernate是一种基于Java的ORM框架。Hibernate允许将Java类映射到关系数据库表,从而实现无需编写SQL语句的数据库操作。

下面是Java web Hibernate如何与数据库链接的攻略:

1. 配置Hibernate配置文件

在项目的src目录下创建一个名为hibernate.cfg.xml的文件,该文件用于配置Hibernate的连接参数,如下所示:

<?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.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>
    <property name="hibernate.connection.username">username</property>
    <property name="hibernate.connection.password">password</property>
    <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
    <property name="show_sql">true</property>
   </session-factory>
</hibernate-configuration>

其中,hibernate.connection.driver_class为数据库驱动类,hibernate.connection.url为数据库连接URL,hibernate.connection.username和hibernate.connection.password为数据库用户名和密码,dialect为数据库方言,show_sql为是否输出SQL语句。

2. 配置数据源和连接池

在web应用的WEB-INF目录下创建一个名为dbcp.xml的文件,该文件用于配置数据源和连接池,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
  <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
             maxActive="100" maxIdle="30" maxWait="10000"
             username="username" password="password" driverClassName="com.mysql.jdbc.Driver"
             url="jdbc:mysql://localhost/test"/>
</Context>

其中,name为数据源名称,type为javax.sql.DataSource,driverClassName为数据库驱动类,url为数据库连接URL,username和password为用户名和密码,maxActive为最大连接数,maxIdle为最大空闲连接数,maxWait为最大等待时间。

3. 创建Java类和映射文件

在Java web项目中创建Java类和映射文件,Java类用于表示数据库表中的数据,映射文件用于将Java类和数据库表映射起来。

假设我们要创建一个User类表示用户,对应的数据表为user,那么我们可以创建如下的User类和User.hbm.xml文件:

User.java

public class User {
  private int id;
  private String name;
  private int age;

  // getter and setter methods
}

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.example.User" table="user">
    <id name="id">
      <generator class="native"/>
    </id>
    <property name="name"/>
    <property name="age"/>
  </class>
</hibernate-mapping>

其中,class的name属性为Java类的名称,table属性为对应的数据表名称,id用于表示数据库表的主键,generator用于指定主键的生成方式,property用于表示Java类的属性对应的数据库表的字段。

4. 创建SessionFactory

在Java web项目中创建一个用于管理Hibernate Session的类SessionFactory,如下所示:

public class HibernateUtil {
  private static SessionFactory sessionFactory;

  static {
    try {
      // 读取Hibernate配置文件
      Configuration cfg = new Configuration().configure();
      // 创建SessionFactory
      sessionFactory = cfg.buildSessionFactory();
    } catch (Throwable ex) {
      System.err.println("Initial SessionFactory creation failed." + ex);
      throw new ExceptionInInitializerError(ex);
    }
  }

  public static SessionFactory getSessionFactory() {
    return sessionFactory;
  }
}

其中,SessionFactory用于生成Session对象,Session对象用于与数据库进行交互。

5. 创建DAO类

在Java web项目中创建一个用于操作数据库的DAO类,如下所示:

public class UserDAO {
  public void save(User user) {
    Session session = HibernateUtil.getSessionFactory().openSession();
    Transaction tx = session.beginTransaction();
    session.save(user);
    tx.commit();
    session.close();
  }

  public User getById(int id) {
    Session session = HibernateUtil.getSessionFactory().openSession();
    User user = (User) session.get(User.class, id);
    session.close();
    return user;
  }
}

其中,save方法用于保存用户信息到数据库,getById方法用于根据用户ID查询用户信息。

6. 示例代码

示例1:保存用户信息到数据库

public class SaveUserServlet extends HttpServlet {
  protected void service(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException {
    User user = new User();
    user.setName(request.getParameter("name"));
    user.setAge(Integer.parseInt(request.getParameter("age")));
    UserDAO dao = new UserDAO();
    dao.save(user);
    response.sendRedirect("/success.jsp");
  }
}

其中,调用UserDAO类的save方法将用户信息保存到数据库。

示例2:根据用户ID查询用户信息

public class GetUserServlet extends HttpServlet {
  protected void service(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException {
    int id = Integer.parseInt(request.getParameter("id"));
    UserDAO dao = new UserDAO();
    User user = dao.getById(id);
    request.setAttribute("user", user);
    request.getRequestDispatcher("/user.jsp").forward(request, response);
  }
}

其中,调用UserDAO类的getById方法根据用户ID查询用户信息,并将查询结果设置到request中,转发到user.jsp页面展示。

以上就是Java web Hibernate如何与数据库链接的完整攻略了,希望对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java web Hibernate如何与数据库链接 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 详解Java实现拓扑排序算法

    详解Java实现拓扑排序算法 什么是拓扑排序算法 拓扑排序算法是一种用来解决有向图中节点之间依赖关系问题的算法,它可以将有向无环图(DAG)中的所有节点按照一定的规则排序,可以用来确定一组任务的执行顺序,比如编译器可以用拓扑排序来确定源代码的编译顺序。 拓扑排序算法原理 拓扑排序算法基于DAG图,DAG图中每个节点表示一个任务,有向边表示任务之间的依赖关系,…

    Java 2023年5月19日
    00
  • 使用maven自定义插件开发

    让我来为您详细讲解“使用maven自定义插件开发”的完整攻略。 1. 简介 Maven是一个Java项目管理工具,它可以帮助我们更方便地管理项目依赖、构建等工作。Maven的自定义插件可以帮助我们更好地满足自己的需求,提高项目的开发效率。本文主要介绍如何使用Maven自定义插件开发,并提供两个基本案例演示。 2. 开发步骤 自定义Maven插件的开发步骤包括…

    Java 2023年5月20日
    00
  • 一起来了解Java的File类和IO流

    一起来了解Java的File类和IO流 File类 Java中的File类是一个用于操作文件和目录的类。使用File类可以实现文件的创建、删除、重命名、遍历等操作。File类的构造函数可以传入一个文件路径字符串或者一个URI,用于表示文件或者目录的路径。下面是一些常用的File类的操作示例: 创建和删除文件 File file = new File(&quo…

    Java 2023年5月19日
    00
  • Mybatis中使用万能的Map传参实现

    现在我将给你详细讲解“Mybatis中使用万能的Map传参实现”完整攻略,让我们开始吧。 什么是Mybatis? MyBatis 是一个基于 Java 的持久层框架。通过配置 XML 映射文件或注解方式将 java 对象与 SQL 语句映射,是非常流行的 ORM 框架。Mybatis 提供了很多查询方法,我们可以使用 select、update、insert…

    Java 2023年5月20日
    00
  • SpringBoot 中常用注解及各种注解作用

    来详细讲解一下SpringBoot中常用注解及各种注解作用的攻略。 1. @SpringBootApplication 这是一个复合注解,包含了@Configuration、@EnableAutoConfiguration和@ComponentScan三个注解。 @Configuration:表示这是一个配置类,可以用来替代xml配置文件。 @EnableA…

    Java 2023年5月15日
    00
  • SpringBoot2 JPA解决懒加载异常的问题

    问题背景 在Spring Boot 2.x版本和JPA框架的使用中,常常会遇到懒加载异常的问题。举个例子,在一对多的关系中,当我们在父类中通过@OneToMany注解定义了子类的关系,而在子类中使用@ManyToOne注解与父类建立联系,当我们使用默认LAZY加载方式时,我们在模板中获取到父类后,在模板中访问子类的属性时,就会遇到一个懒加载异常。 解决方案 …

    Java 2023年5月25日
    00
  • Maven导入依赖时爆红的几种解决方法

    当我们在Maven项目中导入依赖时,可能会遇到一些问题,例如依赖库的版本不兼容、缺少必需的依赖库等等,会导致IDE(例如Eclipse或IDEA)在pom.xml中将有关依赖项部分标记为红色。这时候需要我们采取一些方法进行解决。 解法一:更新或更改版本号 在Maven项目中,依赖项的版本是至关重要的。在遇到标记为红色的依赖项时,我们可以尝试通过更改或更新依赖…

    Java 2023年5月19日
    00
  • 深入剖析美团基于Flume的网站日志收集系统

    深入剖析美团基于Flume的网站日志收集系统 介绍 美团基于Apache Flume搭建了网站日志收集系统,Flume是一个高可靠、高可扩展、高可定制化的分布式日志收集系统,在实际应用中广泛被使用。 系统架构 日志生成端 网站的日志生成端包括Apache、Nginx服务器等,这些服务器会产生大量日志数据。 Agent 在日志生成端安装Agent组件,配置ag…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部