精华内容
下载资源
问答
  • 2009-07-12 | 分类:J2EE版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://geekmind.blogbus.com/logs/42231596.html 使用MyEclipse中用Hibernate反向工程生成的DAO会发生对象无法存储到...

    Hibernate自动生成的DAO的修改方法

    日期:2009-07-12 | 分类:J2EE

    版权声明 :转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://geekmind.blogbus.com/logs/42231596.html

    使用MyEclipse中用Hibernate反向工程生成的DAO会发生对象无法存储到数据库的现象,原因是没有运用事务。当然可以在调用dao对象的代码前后加事务控制,但这样破坏了dao对数据库操作的封装,让业务层中掺杂了持久层代码。所以进行以下修改:

    原来的代码为:

    public void save(Hobby transientInstance) { log.debug("saving Hobby instance"); try { getSession().save(transientInstance); log.debug("save successful"); } catch (RuntimeException re) { log.error("save failed", re); throw re; } }

    修改后:

    public void save(User transientInstance) { log.debug("saving User instance"); try { Session session = getSession(); Transaction tr = session.beginTransaction(); session.save(transientInstance); tr.commit(); session.flush(); session.close(); log.debug("save successful"); } catch (RuntimeException re) { log.error("save failed", re); throw re; } }

     

     

    最好如下使用:

    // Session session = HibernateSessionFactory.getSession();
    // Transaction tx = session.beginTransaction();
    // Users u = new Users();
    // u.setId(4);
    // u.setAddress("sdkd");
    // u.setEmail("54@qq.com");
    // u.setPhone("15165254397");
    // try {
    // session.save(u);
    // tx.commit();
    // } catch (Exception e) {
    // tx.rollback();
    // e.printStackTrace();
    // }finally{
    // session.close();
    // }


    展开全文
  • 对象添加到集合中,然后再修改对象,会发生什么呢? 下面分别看一下修改对象属性值和修改对象引用后的效果。 案例一,修改对象属性值 创建几个对象,添加到List中,然后修改对象的属性值,那么List中的元素的...

    把对象添加到集合中,然后再修改对象,会发生什么呢?

    下面分别看一下修改对象属性值和修改对象引用后的效果。

     

    案例一,修改对象属性值

    创建几个对象,添加到List中,然后修改对象的属性值,那么List中的元素的属性值会随之改变,比如下面的例子:

    public static void test1() {
        List<Order> list = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            Order order = new Order();
            order.setId(i);    //id设为0,1,2
            list.add(order);
            order.setId(i * 2);  //id改为0,2,4
        }
        for (int i = 0; i < 3; i++) {
            Order order = list.get(i);
            System.out.println(i + ":" + order.getId());
        }
    }

    输出的结果是:

    0:0

    1:2

    2:4

    原理很简单,根据Java的内存原理,栈中保存对象的引用,堆中保存对象本身,此例中List的元素是指向堆中具体对象的引用,堆中的对象属性值改了,List中的元素自然也跟着改了。

    用图来说就是这样的:

    图1

     

    案例二,修改对象引用

    创建几个对象,添加到List中,然后修改对象引用,那么List中的元素引用不会随之改变,比如下面的例子:

    public static void test2() {
        List<Order> utilList = new ArrayList<>();  //备用List
        for (int i = 10; i < 13; i++) {
            Order order = new Order();
            order.setId(i);  //id值为10,11,12
            utilList.add(order);
        }
    
        List<Order> list = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            Order order = new Order();
            order.setId(i);  //id值为0,1,2
            list.add(order);
            order = utilList.get(i);  //添加到list后,修改引用,指向备用List的元素
        }
        for (int i = 0; i < list.size(); i++) {
            Order order = list.get(i);
            System.out.println(i + ":" + order.getId());
        }
    }

    输出的结果:

    0:0

    1:1

    2:2

    注意,list中的元素并没有因为对象修改引用而变成10,11,12,由此看来栈中的引用是直接指向堆中的对象,而不是指向栈中的引用。

    用图来说明:

    以下是错误的图:

     

    以下是正确的图:

    在此例中,即使把对象设为null,list中的元素也不会改变,小心内存泄露。

     

    结合以上两个案例,往list中添加元素后如果还要对元素对象进行修改,小心为上。

     

    展开全文
  • #当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data 对象中能找到的所有的属性。当这些属性的值发生改变时,html 视图将也会产生相应的变化。 &amp;amp;lt;div id=&amp;quot;app&amp;quot...

    #当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data 对象中能找到的所有的属性。当这些属性的值发生改变时,html 视图将也会产生相应的变化。

    <div id="app">
       <p>name : {{site}}</p>
       <p>msg : {{url}}</p>
       <p>Alexa : {{alexa}}</p>
    </div>
    <script type="text/javascript">
    // 我们的数据对象
    var data = { name: "joo", msg: hello world", alexa: 10000}
    var vm = new Vue({
        el: '#app',
        data: data
    })
    // 它们引用相同的对象!
    document.write(vm.site === data.site) // true
    document.write("<br>")
    // 设置属性也会影响到原始数据
    vm.site = "Runoob"
    document.write(data.site + "<br>") // Runoob
     
    // 设置data对象也会影响属性
    data.alexa = 1234
    document.write(vm.alexa) // 1234
    //除了数据属性,Vue 实例还提供了一些有用的实例属性与方法。它们都有前缀 $,以便与用户定义的属性区分开来
    document.write(vm.$data === data) // true
    document.write("<br>") // true
    document.write(vm.$el === document.getElementById('vue_det')) // true
    </script>
    
    展开全文
  • Java中将一个对象赋给另一个对象时会发生什么?本文通过举例来说明java对象的引用机制。

    #Java中将一个对象赋给另一个对象时会发生什么?

    本文通过一个例子来说明java对象的引用机制:

    class Computer {
    //电脑中的齿轮直径:diameter of a cog in a computer 
    float cogDiameter; 
    }
    
    public class AssignmentTest {
    public static void main(String[] args) {
    
        // create two computers
        Computer com1 = new Computer();
        Computer com2 = new Computer();
        // first, assign values to com1 and com2
        com1.cogDiameter = 1;
        com2.cogDiameter = 2;
        System.out.println("1:"+"com1.cogDiameter:"+com1.cogDiameter+"  "+"com2.cogDiameter:"+com2.cogDiameter);
    
        //assign com1 to com2
        com2 = com1;
        System.out.println("2:"+"com1.cogDiameter:"+com1.cogDiameter+"  "+"com2.cogDiameter:"+com2.cogDiameter);
    
        //change the cogDiameter of com1
        com1.cogDiameter = 6;
        System.out.println("3:"+"com1.cogDiameter:"+com1.cogDiameter+"  "+"com2.cogDiameter:"+com2.cogDiameter);
    
        }
    }
    
    • 创建一个Computer(电脑)类
    • 这个类包含一个field,也就是float类型的cogDiameter(齿轮直径)
    • 再创建一个AssignmentTest类,用来测试java中将一个对象赋给另一个对象时会发生什么
    • 先创建两个computer对象,分别命名为com1 和 com2
    • 为这两个对象的cogDiameter分别赋值为1和2
    • 第一次输出com1和com2的cogDiameter
    • 然后将com1赋给com2, 注意此时是将对象赋给对象
    • 那么实际系统的工作机制是什么呢?
    • com1和com2这两个名称其实都只是存在于栈内存中的引用,它们只是指向堆内存中的真正的com1和com2对象,而这两个对象的field其实也保存在堆内存中,所以把com1赋给com2的意思就是:把com1的引用赋给com2,这样一来其实com2实际指向的也是com1了
    • 这个时候再输出一次com1和com2各自的cogDiameter就会发现结果有点“出人意料”了
    • 同样地,再改变com1的cogDiameter的值就会发现com2也会受到影响,这也是因为com2真正指向的是com1在堆内存中的对象

    Output(输出):
    1:com1.cogDiameter:1.0 com2.cogDiameter:2.0
    2:com1.cogDiameter:1.0 com2.cogDiameter:1.0
    3:com1.cogDiameter:6.0 com2.cogDiameter:6.0

    展开全文
  • /*观察者模式:当一个对象状态发生改变时,通知依赖他的全部对象发生改变*/ abstract class EventGenerator { private $observers = array(); public function addObserver(Observer $observer) { $this->...
  • fastJson json转对象发生异常

    千次阅读 2017-07-08 16:30:29
    前几天使用fastJson时发生了异常,现将问题记录下来 问题背景:下载模块将下载任务数据和下载返回的页面数据放在一起,使用fastjson转成json存入redis中。web模块从redis里取数据,使用fastjson再转成对象 异常...
  • onblur 事件会在对象失去焦点时发生
  • new对象: function Person(name, age) { this.name = name; this.age = age; } var person = new Person("Alice", 23); new一个对象的四个过程: 1、创建一个空对象 var obj = new Object(); 2、让Person...
  • 今天调试程序时发现, 执行向map插入一个类的对象之后(或者说在插入该对象时),该对象的数据成员(一个一维的指针)的内容发生改变,但其他数据成员(如int变量)却没有变化。但把插入的元素改为指向该对象的指针...
  • js中new一个新对象发生的过程

    千次阅读 2019-04-22 15:52:02
    js中new一个新对象发生的过程 function Person() { var this = { __proto__: Person.prototype } this.name = name this.age = age return this } var person = new Person() 1.创建一个空对象,类型为obj....
  • 当你从容器中获取一个对象,或者添加一个对象时,你所加入的那个对象和所获取的那个对象都不是你原本期望的那个对象,而是他们的拷贝。 对于容器来说,拷贝是时刻发生的,比如你在vector,string,或者是deque中插入...
  • new一个对象的过程发生了什么

    万次阅读 2017-08-17 13:48:53
    创建一个对象通常需要两步: 1. 定义构造函数; 2. 通过new来创建对象实例。 当我们使用new新建一个对象的时候,以new foo(...)为例: 1. 一个新的对象被创建,同时继承了对象类型的原型,即foo.prototype; 2. 执行...
  • win10 将安全信息应用到以下对象发生错误   无法枚举容器中的对象,访问被拒绝      
  • 标题简单描述:先将一个对象放入session,只对对象属性值进行修改,但不将修改后的对象存放session中,发现session中存放的对象属性值也相对应的改变。Person person=new PerSon();request.getSession()....
  • js中new一个对象发生什么

    千次阅读 2017-08-22 15:54:02
    js中可以使用new构造函数的方法创建一个新对象,使用这种方式调用构造函数实际上会经历以下步骤: 1、创建一个新对象 2、将构造函数的作用于赋给新对象(this) 3、执行构造函数中的代码(为新对象添加属性) 4...
  • onfocus 事件在对象获得焦点时发生

    千次阅读 2013-01-14 23:45:07
    onfocus 事件在对象获得焦点时发生。 语法 onfocus="SomeJavaScriptCode" 参数 描述 SomeJavaScriptCode 必需。规定该事件发生时执行的 JavaScript。 支持该事件的 HTML 标签: , ,...
  • uniapp修改对象值后没有发生变化

    千次阅读 2020-05-13 15:49:31
    在使用uniapp中需要修改data中的值,但是页面没有发生变化, 参考于:https://blog.csdn.net/lx_1024/article/details/78814308 谢谢大神的指导。 需要修改的值如下图: data() { return { data:{}, }; }, 这里...
  • 【JS】new一个对象发生了什么

    千次阅读 2018-08-07 10:26:26
    1、创建一个新对象 var obj = {} 2、让构造函数classA的this指向obj,并执行构造函数中的代码(为新对象添加属性) classA.call(obj) 3、设置新对象的_proto_属性指向构造函数classA的prototype对象 obj._...
  • new一个对象,到底会发生什么

    千次阅读 2017-12-22 15:14:36
    对象创建  Java是一门面向对象的编程语言,在Java程序运行过程中无时无刻都有对象被创建出来,在语言层面只是使用new关键字,而在虚拟机中,对象的创建又是怎样一个过程呢?  1.类加载检查  ...
  • 问各位大牛一个问题,如果autorelease NSAutoreleasePool对象发生什么? NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];[pool autorelease]; 也许有人思考过这个问题,我就从来没有思考过,但是...
  • 问:当一个对象被当做参数传递到一个方法后,此方法可改变这个对象的属性,并返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递。在java语言中只有值传递参数;当一个对象实例作为一个参数被...
  • new一个对象的过程中发生了什么?

    千次阅读 2019-12-16 16:45:50
    java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载。加载并初始化类完成后,再进行对象的创建工作。 我们先假设是第一次使用该类,这样的话new一个...
  • 开发反馈加字段报错。 alter table project add ...ORA-04021:等待锁定对象发生超时 select * from dba_ddl_locks where name= 'PROJECT'; alter system kill session 'sid,serial#'; 如果session无法kill,则kill
  • 原因:JavaScript 中对象的赋值是默认引用赋值的(两个对象指向相同的内存地址) 解决办法 this.edit = Object.assign({}, info, { ParkID: 1, ParkName: “aaa” }) 示例 var a={1:2} var b=a console.log(b[“1”]...
  • jquery 的on方法获取发生事件的元素对象方法一:一个元素绑定事件的时候方式一:使用$(this)获取 如下代码:<!DOCTYPE html> <title>Title <script src="../js/jquery-3.2.1.js"></script>
  • java new一个对象的过程中发生了什么

    千次阅读 多人点赞 2019-02-23 20:53:44
    java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载。加载并初始化类完成后,再进行对象的创建工作。 我们先假设是第一次使用该类,这样的话new一个...
  • 在做Spring boot 项目时发生json转义字符绑定对象失败,原因是json里面有些字段包括空格,反斜杠等,如果框架没有对这些json进行转化时,就会报类似如下错误 org.codehaus.jackson.JsonParseException: Illegal ...
  • onfocus---对象获得焦点时发生事件

    千次阅读 2014-01-14 15:54:28
    onfocus 事件在对象获得焦点时发生。 语法 onfocus="SomeJavaScriptCode" 参数 描述 SomeJavaScriptCode 必需。规定该事件发生时执行的 JavaScript。 支持该事件的 HTML 标签: , , , , , ,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 60,448
精华内容 24,179
关键字:

发生对象