Java学习笔记01

时间:2022-08-27 15:07:03

1.原型设计:

将页面的模块、元素、人机交互的形式,利用线框描述的方法,将产品脱离皮肤状态下更加具体跟生动的进行表达.

2.下面的是使用PowerDesigner进行设计的持久层的层次结构图:

虚线三角表示的是“实现接口” 实线三角表示的“继承

Java学习笔记01

其中,下图使用了依赖倒置的原则:高层模块不应该依赖与底层

Java学习笔记01

其中AbstractBaseDao抽象类是为了有选择性的实现特定功能,采用了设计模式中的模版模式。

Java学习笔记01

上图采用的是门面模式。

3. Hibernate(ORM,即Object-Relational Mapping)对象关系映射:

作用就是在关系型数据库和对象之间做了一个映射。从对象(Object)映射到关系(Relation),再从关系映射到对象。这样,我们在操作数据库的时候,不需要再去和复杂SQL打交道,只要像操作对象一样操作它就可以了(把关系数据库的字段在内存中映射成对象的属性)。

Java学习笔记01

从上图中,我们可以看出Hibernate六大核心接口,两个主要配置文件,以及他们直接的关系。Hibernate的所有内容都在这了。那我们从上到下简单的认识一下,每个接口进行一句话总结。

1、Configuration接口:负责配置并启动Hibernate

2、SessionFactory接口:负责初始化Hibernate

3、Session接口:负责持久化对象的CRUD操作

4、Transaction接口:负责事务

5、Query接口和Criteria接口:负责执行各种数据库查询

注意:Configuration实例是一个启动期间的对象,一旦SessionFactory创建完成它就被丢弃了。

其中:hibernate.cfg.xml事例代码如下:

 <!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/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://localhost/XXX</property> //XXX为本地数据库名称
<property name="hibernate.connection.username">root</property> //连接数据库账号
<property name="hibernate.connection.password">root</property> //连接数据密码
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="com/djdj/entity/Order.hbm.xml"/> //mapping 为实体代码到数据库的映射
</session-factory>
</hibernate-configuration>

  //Order.hbm.xml代码如下:
 1 <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.djdj.entity.Order" table="tb_order"> //name为实体类 ,table 为在数据库建的表名称
<id name="id">
<generator class="native"></generator>
</id>
<property name="orderNo"></property> <set name="item">
<key column="orderNo"></key> //其中key中column的值要跟many-to-one中column的值相等
<one-to-many class="com.djdj.entity.OrderItem"></one-to-many> //one-to-many 代表一对多的关系 many-to-one 多对一 many-to-many 代表多对多的关系
15
</set>
</class>
</hibernate-mapping>

实体类Order的代码如下:

package com.djdj.entity;

import java.io.Serializable;
import java.util.Set; public class Order implements Serializable{
private int id;
private int orderNo;
private Set<OrderItem> item; public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getOrderNo() {
return orderNo;
}
public void setOrderNo(int orderNo) {
this.orderNo = orderNo;
}
public Set<OrderItem> getItem() {
return item;
}
public void setItem(Set<OrderItem> item) {
this.item = item;
} }

Hibernate调用配置文件创建数据库表的代码如下:

public class CreateTable {
public static void main(String[] args) {
//读配置
Configuration cfg = new Configuration().configure();
SchemaExport export = new SchemaExport(cfg);
export.create(true, true);
}
}

测试代码如下:

public class Test {

    public static void main(String[] args) {
//读取配置
Configuration cfg = new Configuration().configure();
//获取SessionFactory
SessionFactory factory =cfg.buildSessionFactory();
//获取session
Session session=null; try{
session =factory.openSession();
//开启事务
session.beginTransaction(); //
//中间进行数据操作代码的编写
//
session.getTransaction().commit();
}catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
//离线不更改
//u.setName("1");
} } }

以User为例,实现增删查改的代码如下:

             //设置user
// User user = new User();
// user.setName("st2");
// user.setPwd("1112");
//save 之前是瞬时对象 ,之后为持久化对象:和数据库数据相关
// session.save(user); //查询对象
// User u=(User)session.get(User.class, 2);
//load获取代理对象,效率高,只有真正在使用过程中获取真实对象,get直接获取真实对象。
// User u=(User)session.load(User.class, 2);
// System.out.println(u.getName()); //删除对象
// User u=(User)session.get(User.class, 2);
// System.out.println(u.getName());
// session.delete(u); //修改对象
User u=(User)session.get(User.class, 2);
System.out.println(u.getName());
u.setName("sys");
session.update(u);

级联操作:

Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade:

none,all,save-update,delete, lock,refresh,evict,replicate,persist,

merge,delete-orphan(one-to-many)。一般对many-to-one,many-to-many不设置级联,在<one-to-one>和<one-to-many>中设置级联。

sagacity_shen

初定于  2017-09-20 00:58:34

Java学习笔记01的更多相关文章

  1. Java学习笔记 01 基本数据类型、标识符、关键字和运算符

    一.基本数据类型 基本数据类型 数据类型 内存空间(8位等于1字节) 取值范围 备注 byte 8位 -128~127   short 16位 -32768~32767   int 32位 -2147 ...

  2. 【8-19】java学习笔记01

    JDK API文档 java SE 8 API文档:http://www.oracle.com/technetwork/java/javase/documentation/jdk8-doc-downl ...

  3. java学习笔记-01&period;对象入门

    1.面向对象编程简称是OOP. 2.继承是通过 extends关键字实现的,接口是通过implements关键字实现的. 3.public:意味着后续的定义任何人均可使用. private:意味着除了 ...

  4. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  5. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  6. java学习笔记9--内部类总结

    java学习笔记系列: java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--对 ...

  7. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  8. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  9. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

随机推荐

  1. OpenCv ROI操作

    Mat img, dst; Rect imgroi(, , img.cols, img.rows);//小图像img需要复制到大图的像素区域rect Rect dstroi(, , img.cols, ...

  2. jquery&sol;js分割数组

    substr(star[,length]);//star起始位置 length截取的长度 substring(star,end);//star起始位置,end结束位置 都是以0开始的索引值

  3. Auto Mapper02《demo》

         学习这些基本上网上都有一些教程或者别人做的demo,我是按照这个方式去学习的.先做个demo,学会如何去使用它,接着去慢慢的了解它是如何的运行的,理解里面的一些基本的基础知识.我们不可以再像 ...

  4. Centos修改DNS重启或者重启network服务后丢失问题处理

    本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 介绍 起因 处理 GitHub 本文版 ...

  5. ajaxFileUpload &plus; lua-resty-upload 上传文件

    ajaxFileUpload下载地址 地址:http://pan.baidu.com/s/1mgJypz6 html页面 <!DOCTYPE HTML PUBLIC "-//W3C// ...

  6. 使用 jQuery Mobile 与 HTML5 开发 Web App —— HTML5 离线缓存

    本文要介绍的,是 HTML5 离线网络应用程序的特性,离线网络应用程序在 W3C 中的实际名称是 "Offline Web applications" ,也称离线缓存.当用户打开浏 ...

  7. Android 控件架构

    如果说Android上的app是一个有血有肉的人的话,那么人靠衣装马靠鞍,那么控件就是把app装扮的漂漂亮亮的“衣服”.那么安卓的控件到底是如何架构,又是如何渲染的了. 无论是什么控件,在Androi ...

  8. BZOJ 1503 郁闷的出纳员

    Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常 ...

  9. 分享一个超级好用的php程序员工具箱

    分享一个超级好用的php程序员工具箱,是由php中文网开发的. 集合了php环境搭建.在线小工具.原生手册.文字与视频教程.问答社区等 (php程序员工具箱 v0.1版本,点此下载:http://ww ...

  10. Java数据持久层框架 MyBatis之背景知识一

    对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...