Hibernate入门

Hibernate简介

1、ORM框架/持久层框架 jdbc的一个框架
3、通过管理对象来改变数据库中的数据
4、通过管理对象来操作数据库
5、跨数据库的无缝移植(就是可以直接换数据库比如原先项目用的是mySql后面项目转Oracle不需要改任何代码)
6、不需要写sql语句,这是一个优势同时也成为hibernate被淘汰的原因就是应为sql语句都是hibernate自动生成的所有导致了它丧失了灵活性

为什么使用Hibernate

对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。它很大程度的简化DAO层的编码工作
hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色,它支持各种关系数据库,从一对一到多对多的各种复杂关系。

hibernate增删改查案例

导入pom.xml依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.lzy</groupId>
  <artifactId>lzy_aaa</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>lzy_aaa Maven Webapp</name>
  <url>http://maven.apache.org</url>
   <properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
  <junit.version>4.12</junit.version>
  <servlet.version>4.0.0</servlet.version>
  <hibernate.version>5.3.0.Final</hibernate.version>
  <mysql.driver.version>5.1.46</mysql.driver.version>
 </properties>
  <dependencies>
   <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.12</version>
   <scope>test</scope>
  </dependency>
  <dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.44</version>
  </dependency>
  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>javax.servlet-api</artifactId>
   <version>4.0.1</version>
   <scope>provided</scope>
  </dependency>
   <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>${junit.version}</version>
   <scope>test</scope>
  </dependency>
  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>javax.servlet-api</artifactId>
   <version>${servlet.version}</version>
   <scope>provided</scope>
  </dependency>
  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-core</artifactId>
   <version>${hibernate.version}</version>
  </dependency>
  <dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>${mysql.driver.version}</version>
  </dependency>
  </dependencies>
  <build>
    <finalName>lzy_aaa</finalName>
     <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.7.0</version>
    <configuration>
     <source>${maven.compiler.source}</source>
     <target>${maven.compiler.target}</target>
     <encoding>${project.build.sourceEncoding}</encoding>
    </configuration>
   </plugin>
    </plugins>
  </build>
</project>

  

添加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>
  <!-- 1. 数据库相关 -->
  <property name="connection.username">root</property>
  <property name="connection.password">123</property>
  <property name="connection.url">jdbc:mysql://localhost:3306/demo?useUnicode=true&amp;characterEncoding=UTF-8
  </property>
  <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  <!-- 配置本地事务(No CurrentSessionContext configured!) -->
  <property name="hibernate.current_session_context_class">thread</property>
  <!-- 2. 调试相关 -->
  <property name="show_sql">true</property>
  <property name="format_sql">true</property>
  <!-- 3. 添加实体映射文件 -->
  <mapping resource="com/lzy/one/entity/User.hbm.xml" />
 </session-factory>
</hibernate-configuration>

实体类User.java

package com.lzy.one.entity;
import java.sql.Date;
import java.sql.Timestamp;
public class User {
 private Integer id;
 private String userName;
 private String userPwd;
 private String realName;
 private String sex;
 private Date birthday;
 private Timestamp createDatetime;
 private String remark;
 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 getUserPwd() {
  return userPwd;
 }
 public void setUserPwd(String userPwd) {
  this.userPwd = userPwd;
 }
 public String getRealName() {
  return realName;
 }
 public void setRealName(String realName) {
  this.realName = realName;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
 public Date getBirthday() {
  return birthday;
 }
 public void setBirthday(Date birthday) {
  this.birthday = birthday;
 }
 public Timestamp getCreateDatetime() {
  return createDatetime;
 }
 public void setCreateDatetime(Timestamp createDatetime) {
  this.createDatetime = createDatetime;
 }
 public String getRemark() {
  return remark;
 }
 public void setRemark(String remark) {
  this.remark = remark;
 }
 @Override
 public String toString() {
  return "User [id=" + id + ", userName=" + userName + ", userPwd=" + userPwd + ", realName=" + realName
    + ", sex=" + sex + ", birthday=" + birthday + ", createDatetime=" + createDatetime + ", remark="
    + remark + "]";
 }
}

实体类对应的配置文件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.lzy.one.entity.User" table="t_hibernate_user">
  <id name="id" type="java.lang.Integer" column="id">
   <generator class="increment" />
  </id>
  <property name="userName" type="java.lang.String" column="user_name">
  </property>
  <property name="userPwd" type="java.lang.String" column="user_pwd">
  </property>
  <property name="realName" type="java.lang.String" column="real_name">
  </property>
  <property name="sex" type="java.lang.String" column="sex">
  </property>
  <property name="birthday" type="java.sql.Date" column="birthday">
  </property>
  <property insert="false" update="false" name="createDatetime"
   type="java.sql.Timestamp" column="create_datetime">
  </property>
  <property name="remark" type="java.lang.String" column="remark">
  </property>
 </class>
</hibernate-mapping>

查询QueryDemo.java

package com.lzy.one.test;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
 * 演示hibernate查询
 * @author 
 *
 */
public class QueryDemo {
 public static void main(String[] args) {
  /**
   * 1.对hibernate.cfg.xml这个核心的配置文件进行建模
   * 2.建模后的对象去获取sessionfactory对象  sessionfactory对象中包含了数据库相关信息
   * 3.通过sessionfactory对象去获取session会话
   * 4.session开启事务(查询不需要)
   * 5.操作数据库
   * 6.提交事务(查询不需要)
   * 7.释放资源
   */
  Configuration configure=new Configuration().configure("/hibernate.cfg.xml");
  SessionFactory sessionFactory= configure.buildSessionFactory();
  Session session=sessionFactory.openSession();
  List list=session.createQuery("from User").list();
  for (Object obj : list) {
   System.out.println(obj);
  }
  session.close();
 }
}

增加AddDemo.java

package com.lzy.one.test;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.lzy.one.entity.User;
/**
 * 演示hibernate新增
 * @author 
 *
 */
public class AddDemo {
 public static void main(String[] args) {
  /**
   * 1.对hibernate.cfg.xml这个核心的配置文件进行建模
   * 2.建模后的对象去获取sessionfactory对象  sessionfactory对象中包含了数据库相关信息
   * 3.通过sessionfactory对象去获取session会话
   * 4.session开启事务
   * 5.操作数据库
   * 6.提交事务
   * 7.释放资源
   */
  Configuration configure=new Configuration().configure("/hibernate.cfg.xml");
  SessionFactory sessionFactory= configure.buildSessionFactory();
  Session session=sessionFactory.openSession();
     Transaction transaction=session.beginTransaction();
     User user=new User("秀秀", "888", "天仙秀", "女", new Date(System.currentTimeMillis()), new Timestamp(System.currentTimeMillis()), "我想你是爱我的");
     session.save(user);
     transaction.commit();
  session.close();
 }
}
 

修改EditDemo.java

两种方式

package com.lzy.one.test;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.lzy.one.entity.User;
/**
 * 演示hibernate修改
 * @author 
 */
public class EditDemo {
 public static void main(String[] args) {
  Configuration configure=new Configuration().configure("/hibernate.cfg.xml");
  SessionFactory sessionFactory= configure.buildSessionFactory();
  Session session=sessionFactory.openSession();
     Transaction transaction=session.beginTransaction();
     //1
    /* User user=new User("山鸡", "123", "李山鸡", "男", new Date(System.currentTimeMillis()), new Timestamp(System.currentTimeMillis()), "臭傻逼");
     user.setId(14);
        session.update(user);  */
     //2
        User user=session.get(User.class, 9);
        user.setRealName("小顽童");
        System.out.println(user);
     transaction.commit();
  session.close();
 }
}

删除DelDemo.java

package com.lzy.one.test;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.lzy.one.entity.User;
/**
 * 演示hibernate删除
 * @author 
 *
 */
public class DelDemo {
 public static void main(String[] args) {
  Configuration configure=new Configuration().configure("/hibernate.cfg.xml");
  SessionFactory sessionFactory= configure.buildSessionFactory();
  Session session=sessionFactory.openSession();
     Transaction transaction=session.beginTransaction();
     User user=new User();
     user.setId(9);
     session.delete(user);
     transaction.commit();
  session.close();
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
健身国际俱乐部系统是一种专为健身俱乐部设计的管理软件,它通过集成多种功能来提高俱乐部的运营效率和服务质量。这类系统通常包含以下几个核心模块: 1. **会员管理**:系统能够记录会员的基本信息、会籍状态、健身历史和偏好,以及会员卡的使用情况。通过会员管理,俱乐部可以更好地了解会员需求,提供个性化服务,并提高会员满意度和忠诚度。 2. **课程预约**:会员可以通过系统预约健身课程,系统会提供课程时间、教练、地点等详细信息,并允许会员根据个人时间表进行预约。这有助于俱乐部合理安排课程,避免资源浪费。 3. **教练管理**:系统可以管理教练的个人信息、课程安排、会员反馈等,帮助俱乐部评估教练表现,优化教练团队。 4. **财务管理**:包括会员卡销售、课程费用、私教费用等财务活动的记录和管理,确保俱乐部的财务透明度和准确性。 5. **库存管理**:对于俱乐部内的商品销售,如健身装备、营养补充品等,系统能够进行库存管理,包括进货、销售、库存盘点等。 6. **数据分析**:系统能够收集和分析会员活动数据,为俱乐部提供业务洞察,帮助俱乐部制定更有效的营销策略和业务决策。 7. **在线互动**:一些系统还提供在线平台,让会员可以查看课程、预约私教、参与社区讨论等,增强会员之间的互动和俱乐部的社区感。 8. **移动应用**:随着移动设备的普及,一些健身俱乐部系统还提供移动应用,方便会员随时随地管理自己的健身计划。 9. **安全性**:系统会确保所有会员信息的安全,采取适当的数据加密和安全措施,保护会员隐私。 10. **可扩展性**:随着俱乐部业务的扩展,系统应该能够轻松添加新的功能和服务,以适应不断变化的市场需求。 健身国际俱乐部系统的选择和实施,需要考虑俱乐部的具体需求、预算和技术能力,以确保系统能够有效地支持俱乐部的运营和发展。通过这些系统的实施,健身俱乐部能够提供更加专业和高效的服务,吸引和保留更多的会员,从而在竞争激烈的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值