数据库对象

简单理解Hibernate三种状态的概念及互相转化

[亡魂溺海] 提交于 2019-11-30 07:24:27
本文描述了Hibernate三种状态的概念及互相转化。Java对象的生命周期中有三种状态,而且互相转化。它们分别是临时状态,持久化状态,以及游离状态。 AD:51CTO学院:IT精品课程在线看! 在Hibernate中有三种状态,对它的深入理解,才能更好的理解hibernate的运行机理,刚开始不太注意这些概念,后来发现它是重要的。对于理解hibernate,JVM和sql的关系有更好的理解。对于需要持久化的JAVA对象,在它的生命周期中有三种状态,而且互相转化。 Hibernate三种状态之一:临时状态(Transient):用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象; Hibernate三种状态之二:持久化状态(Persistent):已经持久化,加入到了Session缓存中。如通过hibernate语句保存的对象。处于此状态的对象叫持久对象; Hibernate三种状态之三:游离状态(Detached):持久化对象脱离了Session的对象。如Session缓存被清空的对象。特点:已经持久化,但不在Session缓存中。处于此状态的对象叫游离对象; Hibernate三种状态 Hibernate三种状态中游离对象和临时对象异同: 两者都不会被Session关联,对象属性和数据库可能不一致;

数据库基础

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-30 06:36:01
数据库 MySQL初步 MySQL基础认知 (Oracle真的是走哪祸害到哪23333) Java多用MySQL和Oracle SQLServer也收费,但是还行,比Oracle便宜,一个差不多3w多 SQLite被嵌入到了安卓系统中,主要用于安卓开发,是完全免费的 关于MySQL收费的问题,这篇文章说的很透: 你使用开源软件并不受GPL约束,只有在你基于开源软件,修改开源软件的源码的时候才受 GPL约束。MySQL作为一个开源数据库,几乎所有的用户都只是通过自己的程序去操作这个数据库,不涉及到改动源码的问题,根本不用去考虑是否要遵循 GPL的问题。只有在你修改MySQL源码的情况下,才需要考虑GPL。 如果你只是使用MySQL而不是改写MySQL,那么在这些情况下你应该考虑购买Oracle的商业版本,一是Oracle的商用版本提供的附加组件(监控器、备份工具等)对你有价值,二是Oracle的年度技术支持是你需要的,三是各种潜规则。而不应该是你想合法的使用MySQL才去购买其商业版本。另外,如果你是基于MySQL的源码开发你自己的产品,那么你需要购买的是商业授权,而不是subscription这些商业版本。 除了以上情况,使用社区版就好 关闭服务需要使用管理员权限 服务器无法连接时,要检查服务是否正常开始了 登录MySQL: mysql -uroot -proot /

数据库中间件 Sharding-JDBC 源码分析 —— JDBC实现与读写分离

淺唱寂寞╮ 提交于 2019-11-30 06:23:11
摘要: 原创出处 http://www.iocoder.cn/Sharding-JDBC/jdbc-implement-and-read-write-splitting/ 「芋道源码」欢迎转载,保留摘要,谢谢! 本文主要基于 Sharding-JDBC 1.5.0 正式版 1. 概述 2. unspported 包 3. adapter 包 3.1 WrapperAdapter 3.2 AbstractDataSourceAdapter 3.3 AbstractConnectionAdapter 3.4 AbstractStatementAdapter 3.5 AbstractPreparedStatementAdapter 3.6 AbstractResultSetAdapter 4. 插入流程 5. 查询流程 6. 读写分离 666. 彩蛋 ������关注 微信公众号:【芋道源码】 有福利: 1. RocketMQ / MyCAT / Sharding-JDBC 所有 源码分析文章列表 2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址 3. 您对于源码的疑问每条留言 都 将得到 认真 回复。 甚至不知道如何读源码也可以请教噢 。 4. 新的 源码解析文章 实时 收到通知。 每周更新一篇左右 。 5. 认真的

JPA查询修改数据,但是未保存到数据库,数据库却修改了

a 夏天 提交于 2019-11-30 06:20:32
使用JPA查询数据,对查询出来的结果进行修改,但是不保存数据库,最终数据库却做了同样的修改。 解决方案:需要对修改的值重新复制到另一个对象中在进行修改。 原因: JPA有如上所示的四个生命周期: New:瞬时对象,尚未有id,还未和Persistence Context建立关联的对象。 Managed:持久化受管对象,有id值,已经和Persistence Context建立了关联的对象。 Datached:游离态离线对象,有id值,但没有和Persistence Context建立关联的对象。 Removed:删除的对象,有id值,尚且和Persistence Context有关联,但是已经准备好从数据库中删除 当从数据库获取的数据后,因为有事务管理,所以数据已与session关联,并且数据库有数据,已经持久化了,并且在数据库的缓存当中了,当我们对查询出来的数据进行修改时,缓存缓存Session中的数据发生改变,那么接着数据库也会跟着进行相应的改变。所以就自动执行了update的更新操作。 ———————————————— 版权声明:本文为CSDN博主「小甜宝」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/nanxuan1030/article/details/82986270 来源:

购物车的设计与实现

那年仲夏 提交于 2019-11-30 05:49:49
在开发购物车之前,首先要把几个关键类之间的关系理清楚 类图 首先各个类的意义: 1. Product 产品 2. User 用户 3. Order 订单 4. OrderItem 订单项 前3者都好理解, 订单项需要解释一下。 比如阁下在某宝下了 一次订单,这个订单包括了 苹果 3个 蜡烛 2个 玩具 4个 一条记录就是一个订单项,对应一种商品,以及购买数量。 类关系图 1. 产品和订单项的关系是 一对多   一种产品,对应多条订单项。   一条订单项,对应一种产品 2. 订单项和订单的关系 多对一   一个订单里有多条订单项   一个订单项,只会出现在一个订单里 3. 订单和用户的关系: 多对一   一个订单,只能属于一个用户   一个用户,可以下多个订单 因为本文主要讲解如何开发购物车,所以会把重点放在与购物车紧密相关的查询功能方面,不会全面地提供CRUD(增删改查)功能,如果对CRUD还不够熟悉,请参考 Servlet CRUD 在开始之前,需要做一些数据库方面的准备工作. 1. 创建数据库 cart 2. 在cart 数据库中创建表product 3. 为product准备4条数据 (与 Product模块 类似的,不提供完整的用户CRUD(增 删 改 查) 也是通过SQL准备User数据) 4. 在cart 数据库中创建表user 5.为user准备1条数据 6

models数据模型学习笔记

我与影子孤独终老i 提交于 2019-11-30 04:15:31
每个应用一般都会定义一个或多个models,这个数据models实际上是与数据库相关的,models中的每个属性都是数据库当中的一个字段,每个字段是数据库中的一个列。在models中定义的每个类相当于数据库当中的table.如 [python] view plain copy class Musician(models.Model):   First_name = models.CharField(max_length = 50 )   Last_name = models.CharField(max_length = 50 )   Instrument = models.CharField(max_length = 100 )    class Album(models.Model):   Artist = models.ForeignKey(Musician)   Name = models.CharField(max_length = 100)   Release_date = models.DateField()   Num_starts = models.IntegerField() 如上所示,每个class的属性都是models中的某些字段类的实例,如Name是models.CharField的实例。Models中有许多的字段属性类。并且这些字段属性类均有一些参数

19-JDBC、代码优化

前提是你 提交于 2019-11-30 03:32:48
JDBC Java Database Connectivity,Java数据库连接 JDBC的本质是Java对所有关系型数据库进行连接操作所制定的一套规则,就是接口。 不同的数据库针对这套规则制定了相对应的实现类,我们需要使用这些已经做好的实现类,来使用Java对数据库进行连接和操作。 实现步骤: 1、导入jar包 在项目的根目录中创建lib文件夹 将mysql-connector-java-5.1.37-bin.jar复制到lib中 数据库驱动的版本一定要和数据的版本是对应的,如果版本差距过大是会报错的。 右键点击该jar包,选择Build Path,点击Add to Build Path 2、注册驱动 Class.forName("com.mysql.jdbc.Driver"); 3、获取连接对象 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/库名", "用户名", "密码"); 访问本地数据库路径的简写:jdbc:mysql:///库名 4、编写SQL语句 5、获取执行对象 Statement state = conn.createStatement(); 6、执行SQL语句 state.executeUpdate(sql) 实现增删改 state.executeQuery

mybatis与hibernate区别

坚强是说给别人听的谎言 提交于 2019-11-30 02:30:12
具体从几个方面说一下两者的区别: 1.两者最大的区别: 针对简单逻辑,Hibernate和MyBatis都有相应的代码生成工具,可以生成简单基本的DAO层方法。 针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。 2.开发难度对比 Hibernate的开发难度要大于Mybatis。主要由于Hibernate比较复杂、庞大,学习周期较长。 而Mybatis则相对简单一些,并且Mybatis主要依赖于sql的书写,让开发者感觉更熟悉。 3.sql书写比较 Mybatis的SQL是手动编写的,所以可以按需求指定查询的字段。不过没有自己的日志统计,所以要借助log4j来记录日志。 Hibernate也可以自己写SQL来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性。不过Hibernate具有自己的日志统计。 4.数据库扩展性比较 Mybatis由于所有SQL都是依赖数据库书写的,所以扩展性,迁移性比较差。 Hibernate与数据库具体的关联都在XML中,所以HQL对具体是用什么数据库并不是很关心。 5.缓存机制比较 相同点:Hibernate和Mybatis的二级缓存除了采用系统默认的缓存机制外,都可以通过实现你自己的缓存或为其他第三方缓存方案

MySQL数据库初识

非 Y 不嫁゛ 提交于 2019-11-30 02:13:01
一 数据库概述 1. 数据库???   什么是数据库呢?   先来看看百度怎么说的 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。   百度的貌似不好理解啊,让我说啊,数据库是存储数据的地方,超哥,你这不是废话么?这位同学,你你你你你说的对,哈哈,存数据的地方是存在哪里呢,存在硬盘上,为什么不是存在内存里面,因为内存无法永久保存。之前我们存数据都是使用的文件,在一个word文档里面写一些羞羞的网址,然后保存,就存储到硬盘上了。有同学就会说了,超哥,我这通过文件不是也将数据保存上了吗?是的,没毛病,但是你想,通过文件来操作数据,效率是不是很低,首先打开关闭就比较慢,其次是我们操作起来也比较麻烦,对不对,如果我想记录一条关于我个人信息的数据,我使用文档来存,是不是很不友好,并且我们要查数据的时候,看图1:图1是一个word里面记录的信息,如果我想查询出所有人的名字,这个操作是不是就很难搞定了,来来来,配合起来~~,你应该说是的,那我就接着说,有同学可能就会说了,老师我用excel啊,看图2,一列就搞定了,没毛病,但是你想打开操作excel效率低不低。并且通过你自己写的程序来操作这些文件是不是很麻烦

Java Web 三层架构详解

醉酒当歌 提交于 2019-11-30 02:06:21
java 三层架构ssh 一个spring2.5+hibernate3.2+struts2.0组合框架,使用spring 的 IoC来管理应用 的 所有bean,包括struts2 的 action,充分发挥了spring轻量级框架 的 优势。 摘 要: 针对当前Web应用程序开发面临的问题,结合目前比较流行的开源框架Spring、Struts和Hibernate,提出了一种开发J2EE Web应用的轻量级解决方案,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。并且,通过案例具体说明了如何将这一方案应用到实际项目中。 关键词: J2EE MVC Struts Spring Hibernate 大型企业级Web应用系统的开发通常要求有一个良好的软件架构、便于协作开发和扩展升级,而传统的开发模式不能很好地满足这些要求。本文针对当前Web应用程序开发面临的问题,结合目前比较流行的开源框架SSH(Spring、Struts、Hibernate),提出一种开发J2EE 企业级Web应用的轻量级解决方案,并通过案例具体说明如何将这一方案应用到实际项目中。 1 框架技术 著名的软件大师Ralph Johnson对框架(Framework)进行了如下的定义: 框架是整个系统或系统的一部分的可重用设计,由一组抽象的类及其实例间的相互作用方式组成[1] 。