当前位置: 首页 > news >正文

做购物网站的初衷上海十大集团

做购物网站的初衷,上海十大集团,郑州电商小程序定制,wordpress专业开发指南前言#xff1a; 最近正在学习Hibernate通过注解#xff08;annotation#xff09;来管理映射关系#xff0c;以前都是通过XML映射文件。下面拿个小例子说一下。 数据库物理模型#xff1a; 数据库的描述#xff1a; 一篇博客随笔可以分到不同的类中#xff0c;一个类中… 前言   最近正在学习Hibernate通过注解annotation来管理映射关系以前都是通过XML映射文件。下面拿个小例子说一下。 数据库物理模型 数据库的描述   一篇博客随笔可以分到不同的类中一个类中又可以包含许多不同的博客随笔。就如同博客园的设计。也就是上图中 博客-组 和 博客-消息是多对多的映射。 Hibernate关联映射方式   双向N-N关联 两端都要使用Set集合属性两端都增加对集合属性的访问。双向N-N关联没有太多的选择只能采用连接表来建立两个实体之间的关联关系。 生成sql语句 drop table if exists blogGroup;drop table if exists blogMessage;drop table if exists groupMessage;create table blogGroup (groupId int not null auto_increment,groupName varchar(50),primary key (groupId) );create table blogMessage (msgId int not null auto_increment,msgContent varchar(1000),primary key (msgId) );create table groupMessage (groupId int not null,msgId int not null,primary key (groupId, msgId) );alter table groupMessage add constraint FK_Relationship_1 foreign key (groupId)references blogGroup (groupId) on delete restrict on update restrict;alter table groupMessage add constraint FK_Relationship_2 foreign key (msgId)references blogMessage (msgId) on delete restrict on update restrict; POpersisent object类   PO POJO(plain ordinary java object) 注解 PO : BlogGroup  package com.blog.entriy;Entity Table(nameblogGroup) public class BlogGroup implements Serializable{IdColumn(namegroupId)GeneratedValue(strategyGenerationType.IDENTITY)private int groupId;Column(namegroupName)private String groupName;//fetchFetchType.EAGER 抓取实体时立即抓取关联实体我用的get方式加载一个对象//ascadeType.PERSIST, CascadeType.MERGE, 分别是更新和保存时级联ManyToMany(targetEntityBlogMessage.class, cascade{CascadeType.PERSIST, CascadeType.MERGE}, fetchFetchType.EAGER)JoinTable(namegroupMessage,joinColumnsJoinColumn(namegroupId, referencedColumnNamegroupId),inverseJoinColumnsJoinColumn(namemsgId, referencedColumnNamemsgId))private SetBlogMessage message new HashSetBlogMessage();public int getGroupId() {return groupId;}public void setGroupId(int groupId) {this.groupId groupId;}public String getGroupName() {return groupName;}public void setGroupName(String groupName) {this.groupName groupName;}public SetBlogMessage getMessage() {return message;}public void setMessage(SetBlogMessage message) {this.message message;} } PO : BlogMessage  package com.blog.entriy;Entity Table(nameblogMessage) public class BlogMessage implements Serializable{IdColumn(namemsgId)GeneratedValue(strategyGenerationType.IDENTITY)private int msgId;Column(namemsgContent)private String msgContent;ManyToMany(targetEntityBlogGroup.class)JoinTable(namegroupMessage,joinColumnsJoinColumn(namemsgId, referencedColumnNamemsgId),inverseJoinColumnsJoinColumn(namegroupId, referencedColumnNamegroupId))private SetBlogGroup group new HashSetBlogGroup();public int getMsgId() {return msgId;}public void setMsgId(int msgId) {this.msgId msgId;}public String getMsgContent() {return msgContent;}public void setMsgContent(String msgContent) {this.msgContent msgContent;}public SetBlogGroup getGroup() {return group;}public void setGroup(SetBlogGroup group) {this.group group;} } Hibernate中数据的三种状态   补充一下Dao层的操作需要掌握Hibernate中数据的三种状态   1  临时状态Transient用new创建的对象它没有持久化没有处于Session中处于此状态的对象叫临时对象   2  持久化状态Persistent已经持久化加入到了Session缓存中。如通过hibernate语句保存的对象。处于此状态的对象叫持久对象   3  游离状态Detached持久化对象脱离了Session的对象。如Session缓存被清空的对象。    盗图两张   1.对于刚创建的一个对象如果session中和数据库中都不存在该对象那么该对象就是瞬时对象(Transient)。   2.瞬时对象调用save方法或者离线对象调用update方法可以使该对象变成持久化对象如果对象是持久化对象时那么对该对象的任何修改都会在提交事务时才会与之进行比较如果不同则发送一条update语句否则就不会发送语句。   3.离线对象就是数据库存在该对象但是该对象又没有被session所托管。 DAO层   分别测试了不同方式的插入操作 以及更新和删除。具体看函数的实现。 package com.blog.dao;public class BlogDao {private SessionFactory sessionFactory; public Session getSession() { return sessionFactory.getCurrentSession(); } public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory sessionFactory; } public BlogGroup get_test(int id){BlogGroup blogGroup null;Session session null;Transaction tran null;try{session this.getSession();tran session.beginTransaction();blogGroup (BlogGroup)session.get(BlogGroup.class, id);tran.commit();} catch(Exception e){System.out.println(e.toString());tran.rollback();}return blogGroup;}  //只插入一端博客-组BlogGrouppublic void insert_test1(){Session session null;Transaction tran null;try{session this.getSession();tran session.beginTransaction();BlogGroup blogGroup new BlogGroup();blogGroup.setGroupName(html);session.save(blogGroup);tran.commit();} catch(Exception e){System.out.println(e.toString());tran.rollback();}}//同时插入两端博客-组 和 博客-消息没有用cascade级联操作所以BlogGroup和BlogMessage两端都要先持久化public void insert_test2(){Session session null;Transaction tran null;try{session this.getSession();tran session.beginTransaction();BlogGroup blogGroup new BlogGroup();blogGroup.setGroupName(c);BlogMessage blogMessage new BlogMessage();blogMessage.setMsgContent(c primer);session.save(blogMessage);SetBlogMessage message new HashSetBlogMessage();message.add(blogMessage);blogGroup.setMessage(message);session.save(blogGroup);tran.commit();} catch(Exception e){System.out.println(e.toString());tran.rollback();}}//同时插入两端,对BlogGroup设置persist级联操作 ManyToMany(cascade{CascadeType.PERSIST})public void insert_test3(){Session session null;Transaction tran null;try{session this.getSession();tran session.beginTransaction();BlogGroup blogGroup new BlogGroup();blogGroup.setGroupName(javaee);BlogMessage blogMessage new BlogMessage();blogMessage.setMsgContent(Springhibernatestruct);blogGroup.getMessage().add(blogMessage);session.persist(blogGroup);tran.commit();} catch(Exception e){System.out.println(e.toString());tran.rollback();}}//向博客-组BlogGroup添加新的 博客-消息BlogMessage,对BlogGroup再添加一个更新的级联操作CascadeType.MERGE public void update_test(){BlogGroup blogGroup get_test(1);//得到blogGroup主键为1的groupSession session null;Transaction tran null;try{session this.getSession();tran session.beginTransaction();BlogMessage blogMessage new BlogMessage();blogMessage.setMsgContent(css 学习笔记);blogGroup.getMessage().add(blogMessage);session.merge(blogGroup);tran.commit();} catch(Exception e){System.out.println(e.toString());tran.rollback();}}//删除某一个博客-组BlogGroup因为不能删除我们写的博客消息所以不能有删除的级联操作  //注意我们有三个表分别是“博客-组” “博客-消息”“组-消息”当从“博客-组”中删除一条记录X时表“博客-消息”中和X相关的数据不会删除  //因为我们没有设置级联关系但是表“组-消息”中和X相关的数据会删除干净表“组-消息”是中间关联表一方被移除之后该表相关数据自然被移除。public void delete_test(){BlogGroup blogGroup get_test(1);//得到blogGroup主键为1的groupSession session null;Transaction tran null;try{session this.getSession();tran session.beginTransaction();session.delete(blogGroup);tran.commit();} catch(Exception e){System.out.println(e.toString());tran.rollback();}} } 罗列所有持久化类的类名   hibernate.cfg.xml中配置 hibernate-configuration session-factory ...         mapping classcom.blog.entriy.BlogGroup/       mapping classcom.blog.entriy.BlogMessage/      .../session-factory /hibernate-configuration     如果整合了Springapplication.cfg.xml中的配置bean idsessionFactory classorg.springframework.orm.hibernate4.LocalSessionFactoryBean     !--Spring中 包扫描的方式加载注解类 --property nameannotatedClasseslistvaluecom.blog.entriy.BlogGroup/valuevaluecom.blog.entriy.BlogMessage/value/list/property !-- 通过配置文件的方式获取数据源只是通过XML管理映射方式的。property namemappingResourceslist以下用来列出所有的PO映射文件valuepublishparty.cfg.xml/value/list/property --     ..... /bean   转载于:https://www.cnblogs.com/hujunzheng/p/5065409.html
http://wiki.neutronadmin.com/news/228580/

相关文章:

  • 股票交易网站开发站群系统程序
  • 打开网站说建设中是什么问题?爱营销电信版下载app最新版
  • 做化妆品代理在那些网站比较多wordpress移动端编辑器
  • 网站建设与单位干部作风的关系安康微平台
  • 网站开发补充协议 违约网站建设要哪些工作
  • 网站服务器怎么启动东家乐装修公司怎么样
  • 服饰网站模板设计公司销售管理系统
  • wordpress网站安全性派设计包装设计网站
  • 顺德做网站那家好代做毕设要注册答疑网站
  • 网站建设氵金手指下拉十三小程序开发教程知乎
  • 网站如何建设与优化在线教育网站开发经验简历填写
  • 石家庄的网站建设公司哪家好广东网站设计流程
  • 绍兴网站建设方案自家宽带怎么建设网站
  • 网站进度条抖抈app软件下载
  • 做生存分析的网站有哪些上海外贸新三样出口超2400亿元
  • 非模板网站关闭微信小程序入口
  • 建立企业网站的详细步骤西宁网站seo
  • html5做网页网站建设小网站教程
  • 微信登录建设银行网站google关键词优化排名
  • html5 metro风格网站模板锦州建设银行网站
  • 界面设计师新乡网站seo优化
  • 扬州网站建设费用平面设计网站
  • 微信咋做自己的网站河南省干部任免最新公示
  • 南京市鼓楼区建设局网站唐山建设信息网站
  • wordpress种子站如何查看网站服务器
  • 模板网站建设流程图wordpress高亮插件
  • 如何做一个移动网站国际新闻最新消息10条
  • 建设部网站注册规划师查询网页设计公司公章
  • 温州网站制作软件嵌入式培训机构排行
  • 大型门户网站 代码做房地产一级市场的看什么网站