hibernate访问postgreSQL的搭建过程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014166319/article/details/77461223

1. postgreSQL的安装:

安装包下载:https://www.postgresql.org/download/ 官网下载postgresql-9.1.3-1-windows.exe(46M);

傻瓜式安装,跟着安装引导走,一路next,用户名默认为 postgres,密码*,端口默认5432

启动服务,打开services.msc,如果postgre没有启动则手动启动;

2. postgreSQL客户端的工具的安装

1 Navicat Premium 12 和pgAdmin 4;

navicat,去官网下载https://www.navicat.com/download

pgAdmin 4,去官网下载https://www.pgadmin.org/download/

2 安装

3 双击连接->填写用户名,密码,端口,连接名,创建连接

4 右键点击连接名称,创建数据库

5 创建模式,(postgre的数据结构多了一层模式的结构,数据库>模式>表>字段),数据库创建时有默认的模式为public,右键数据库名,创建模式myschema
6 创建表,右键表,创建表,填写字段(user_id,username,password);

3. 搭建hibernate环境:

1 用eclipse新建javaWeb项目
2 引入jar包:
  hibernate jar包 在pom.xml写依赖:
  

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.5.Final</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.0.1.Final</version>
        </dependency>
        <!-- postgresql依赖包 -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.4-1201-jdbc41</version>
        </dependency>

3 配置hibernate配置文件.
项目由maven管理,在resources目录下加入hibernate.cfg.xml文件,该配置文件主要记录了数据库的有户名,ip,密码,端口,所用jdbc驱动等信息内容如下:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "src/resource/schema/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">org.postgresql.Driver</property>
        <property name="connection.url">
            jdbc:postgresql://10.21.132.19:5432/mydatabase
        </property>
        <property name="connection.username">chen</property>
        <property name="connection.password">root123</property>

        <!-- JDBC connection pool (use the built-in) -->
        <!-- <property name="connection.pool_size">1</property> -->
        <property name="c3p0.driver_class">org.postgresql.Driver</property>
        <property name="hibernate.c3p0.acquire_increment">1</property>
        <property name="hibernate.c3p0.validate">true</property>
        <property name="hibernate.c3p0.idle_test_period">20</property> <!-- seconds -->
        <property name="hibernate.c3p0.max_size">5</property>
        <property name="hibernate.c3p0.max_statements">100</property>
        <property name="hibernate.c3p0.min_size">2</property>
        <property name="hibernate.c3p0.timeout">90</property> <!-- seconds -->

        <!-- SQL dialect -->
        <property name="hibernate.dialect">
            org.hibernate.spatial.dialect.postgis.PostgisDialect
        </property>
        <property name="dialect">
            org.hibernate.dialect.PostgreSQLDialect
        </property>

        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">
            org.hibernate.cache.internal.NoCacheProvider
        </property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">false</property>

        <!-- Drop and re-create the database schema on startup -->
        <!-- <property name="hbm2ddl.auto">update</property> -->

        <!-- <mapping resource="com/hik/gss/sys/domain/User.hbm.xml" />-->

        <mapping class="cn.sibat.template.model.User"></mapping>
    </session-factory>

</hibernate-configuration>

4 hibernate的实体类映射。

1 hibernate的操作有两种1.xml文件配置2.注解,这里用的是注解法,图个方便.
实体类的定义,如下:

package cn.sibat.template.model;

import javax.persistence.*;

@Entity
@Table(name="public.user")
public class User {
    private Integer userId;
    private String userName;
    private String passWord;

    @Id
    @GeneratedValue(generator="increment")
    @GenericGenerator(name="increment", strategy = "increment")
    @Column(name = "user_id")
    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    @Column(name = "username")
    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    @Column(name = "password")
    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

}

注解说明:@Entity实体类标注, @Table标注表名,注意表名前面要写模式名(public),被坑过. @Id 表示主键 @Column列名
2 查询数据库代码Demo:


final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
                .configure().build();
SessionFactory sessionFactory = null;
try {
    //注册
     sessionFactory = new MetadataSources( registry )
                     .buildMetadata()
                     .buildSessionFactory();
    } catch (Exception e) {
     // The registry would be destroyed by the SessionFactory, 
     //but we had trouble building the SessionFactory
     // so destroy it manually.
     StandardServiceRegistryBuilder.destroy( registry );
}
    //创建会话工厂
    Session session = sessionFactory.openSession();
    //会话工厂生产会话 
    session.beginTransaction();
    //会话执行查询语句 ,获取结果
    List result = session.createQuery( "from model.User" ).list();
    for ( User user : (List<User>) result ) {
        System.out.println( "User (" + user.getUserName() + ") : " + user.getPassWord() );
    if (this.passWord.equals(user.getPassWord()) &&   this.userName.equals(user.getUserName())) {
                return "SUCCESS";
            }
        }
    session.getTransaction().commit();
    session.close();

总结一下查询的步骤:

1 注册
2 创建会话工厂
3 会话工厂生产会话
4 创建查询语句
5 会话执行查询语句
6 获取结果

猜你喜欢

转载自blog.csdn.net/u014166319/article/details/77461223