标签: objectinstantiation

简单的hibernate查询返回非常慢

我有以下hibernate查询:

Query query = session.createQuery("from MyHibernateClass");
List<MyHibernateClass> result = query.list();// executes in 7000ms
Run Code Online (Sandbox Code Playgroud)

当我在MySQL中记录正在执行的sql时,我看到了

select 
  myhibernat0_.myFirstColumn as myfirstcolumn92_, 
  myhibernat0_.mySecondColumn as mysecondcolumn92_, 
  myhibernat0_.mythirdcolumn as mythirdcolumn92_, 
  myhibernat0_.myFourthColumn as myfourthcolumn92_ 
from MyHibernateClass myhibernat0_ 
where (1=1);
Run Code Online (Sandbox Code Playgroud)

当在MyHibernateClass数据库表中的3500行的小数据集上测量jvm中的java代码时,这需要大约7000ms.

如果我在另一方面使用直接jdbc如下:

Statement statement = session.connection().createStatement();
ResultSet rs = statement.executeQuery("select * from MyHibernateClass");// 7ms
List<MyHibernateClass> result = convert(rs);// executes in 20ms
Run Code Online (Sandbox Code Playgroud)

我看到相同的sql进入数据库,但现在jvm中java代码的花费时间是7ms.

MyHibernateClass是一个带有getter和setter的简单java bean类,我没有使用特殊的resulttransformers,如示例中所示.我只需要该类的只读实例,并且不需要附加到hibernate会话.

我宁愿使用hibernate版本但不能接受执行时间.

补充信息:添加hibernate日志后我看到了

[2011-07-07 14:26:26,643]DEBUG [main] [logid: ] - 
  org.hibernate.jdbc.AbstractBatcher.logOpenResults(AbstractBatcher.java:426) - 
  about to open ResultSet (open ResultSets: 0, globally: 0)
Run Code Online (Sandbox Code Playgroud)

接下来是3500条以下日志语句

[2011-07-07 14:26:26,649]DEBUG [main] …
Run Code Online (Sandbox Code Playgroud)

java hibernate objectinstantiation

27
推荐指数
5
解决办法
5万
查看次数

从父对象创建子对象实例的最佳方法

我正在从父对象创建一个子对象.所以场景是我有一个对象和一个子对象,它为我想要搜索的场景添加了一个距离属性.我选择使用继承,因为我的UI与搜索对象或对象列表等效地工作,而不是位置搜索的结果.所以在这种情况下,继承似乎是一个明智的选择.

目前我需要MyObjectSearch从一个实例生成一个新对象MyObject.目前我通过逐个设置属性手动在构造函数中执行此操作.我可以使用反射,但这会很慢.有没有更好的方法来实现这种对象增强?

希望下面的代码说明了这个场景.

public class MyObject {

    // Some properties and a location.
}

public class MyObjectSearch : MyObject {

    public double Distance { get; set; }

    public MyObjectSearch(MyObject obj) {
         base.Prop1 = obj.Prop1;
         base.Prop2 = obj.Prop2;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的搜索功能:

public List<MyObjectSearch> DoSearch(Location loc) { 
  var myObjectSearchList = new List<MyObjectSearch>();       

   foreach (var object in myObjectList) {
       var distance = getDistance();
       var myObjectSearch = new MyObjectSearch(object);
       myObjectSearch.Distance = distance;
       myObjectSearchList.add(myObjectSearch);
   } 
   return myObjectSearchList;
Run Code Online (Sandbox Code Playgroud)

}

.net c# inheritance objectinstantiation

24
推荐指数
4
解决办法
3万
查看次数

Object Literal Instantiation比设置属性更快吗?

鉴于以下示例,客观上比另一个客观更好/更快/更安全吗?对象文字实例化是否应该是实用的最佳实践?

这在哪里不合适?

class Person
{
    public string name;
    public int age;
}
void MakePeople()
{
    Person myPerson = new Person();
    myPerson.name = "Steve";
    myPerson.age = 21;

    Person literalPerson = new Person { name = "John", age = 22 };
}
Run Code Online (Sandbox Code Playgroud)

c# design-patterns object instantiation objectinstantiation

9
推荐指数
1
解决办法
2994
查看次数

不使用new运算符实例化对象

在一次java访谈中,提出以下问题:

在java中有没有一种方法来实例化一个对象而不使用new运算符?我回答他说没有其他的实例化方法.但他问我如何使用java中的xml文件(在spring框架中)中的java 配置实例化java中的对象.我说,内部弹簧用于reflection utils创建一个带有new操作符的对象.但面试官并不相信我的回答.

我看到这个链接很有用但是有一个new操作员间接参与了一个或另一个内部方法.

有没有办法在不使用new运算符的情况下在java中实例化对象?

java xml new-operator objectinstantiation

9
推荐指数
3
解决办法
2万
查看次数

在Android中实例化对象时是否可以绕过构造函数

Android有没有办法在不调用任何构造函数的情况下实例化对象?

在Java中,Sun有sun.reflect.ReflectionFactory.getReflectionFactory().newConstructorForSerialization(),在.Net中我们有System.Runtime.Serialization.FormatterServices.GetUninitializedObject()但我在Android平台上找不到类似的东西.

android constructor objectinstantiation

6
推荐指数
1
解决办法
1150
查看次数

Type.GetType不区分大小写 - WinRT

microsoft文档,Type.GetType在.NET 4.5中可以不区分大小写.不幸的是,这在WinRT(Metro/Modern UI/Store应用程序)中不可用.

有一个已知的解决方法吗?因为我必须从协议中实例化对象,所有协议都具有大写的字符串表示形式.

示例:从"MYOBJECT",我必须实例化MyObject.

我目前使用Activator.CreateInstance(Type.GetType("MYOBJECT")),但由于区分大小写,它不起作用.

谢谢

c# types case-insensitive objectinstantiation windows-runtime

5
推荐指数
1
解决办法
2224
查看次数

使用不同构造函数的对象实例化

最近我的老师正在讨论使用不同的构造函数来实例化对象.但我真的很困惑.为此,我想了解为什么我得到以下编译错误.

class SuperClass {
    void superClass(){
        System.out.println("superClass");
    }
}

class SubClass extends SuperClass {
    void subClass(){
        System.out.println("subClass");
    }
}

class Call {
    public static void main(String args[]){
        SuperClass s = new SubClass();
        s.superClass();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我编译并运行以下代码时,我得到了输出

superClass
Run Code Online (Sandbox Code Playgroud)

但是当我尝试subClass()通过sObject 调用时,我收到以下错误.

damn.java:17: cannot find symbol
symbol  : method subClass()
location: class SuperClass
                s.subClass();
                 ^
1 error
Run Code Online (Sandbox Code Playgroud)

好吧,根据这个,我可以假设即使我用不同的构造函数实例化对象,只有指定的Object类型被加载到RAM.

但是,当我在这里使用覆盖时,

class SuperClass {
    void superClass(){
        System.out.println("superClass");
    }
}

class SubClass extends SuperClass {
    void superClass(){
        System.out.println("subClass");
    }
}

class Call …
Run Code Online (Sandbox Code Playgroud)

java objectinstantiation

5
推荐指数
1
解决办法
1060
查看次数

在另一个对象中创建复杂/嵌套JavaScript对象的正确方法

以下代码旨在作为可重用对象的简单构造的简短示例.这是一个非常简单的,一个级别的深度对象,可以根据需要添加多个道具和方法,然后分配它们.

function someDesiredReusableType(optionally, pass, ctor, pars, here) {
   //core obj to return
  var DesiredTypeCrtor = {
              propSkiingLocation: "canada",
              OrderTickets: function(optionally){
                             var tryRoomWView = optionaly;
                             print(
                                  "Dear " + ctor +", your request for " +
                                  propSkiingLocation + " is now being processed: an " +
                                  tryRoomWView  + " request was notified, we understand you have " + pars + " for cross country transportation, confirmation email will be sent " + here + " as soon as we process your …
Run Code Online (Sandbox Code Playgroud)

javascript oop objectinstantiation

5
推荐指数
1
解决办法
103
查看次数

如何创建一个不可实例化的类?

对于我目前正在工作的项目之一,我正在考虑创建一个无法由客户端实例化的类,并且只通过特定接口提供实例,即客户端无法通过某些实现创建更多实例hackery如:

>>> try:
...     raise WindowsError
... except:
...     foo = sys.exc_info()
... 
>>> foo
(<type 'exceptions.WindowsError'>, WindowsError(), <traceback object at 0x0000000005503A48>)
>>> type(foo[2])()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot create 'traceback' instances
Run Code Online (Sandbox Code Playgroud)

一旦他有一个.

我成功地创建了一个无法实例化的类.即

>>> class Foo():
...     def __init__(self):
...         raise TypeError("cannot create 'Foo' instances")
... 
>>> bar = Foo()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in __init__
TypeError: cannot create 'Foo' …
Run Code Online (Sandbox Code Playgroud)

python instantiation objectinstantiation

4
推荐指数
1
解决办法
3810
查看次数

如何动态实例化一个服务?

我有一项Utils非常繁重的服务。我想在特定用户操作上使用其中定义的一些功能。由于这项服务很重,我想懒惰地实例化它(根据用户操作)。

我如何实现这一目标?

服务

module.service('Utils', function (dep1, dep2) {
   this.method1 = function () {
      // do something
   }
   // other methods
});
Run Code Online (Sandbox Code Playgroud)

控制器

module.controller('AppCtrl', function ($scope) {
    // I don't want to inject Utils as a dependency.

    $scope.processUserAction = function () {
       // If the service is not instantiated 
       // instantiate it and trigger the methods defined in it. 
    }
});
Run Code Online (Sandbox Code Playgroud)

标记

<div data-ng-controller="AppCtrl">
    <button data-ng-click="processUserAction()"> Click Me </button>
</div>
Run Code Online (Sandbox Code Playgroud)

dependency-injection objectinstantiation angularjs angular-services

4
推荐指数
1
解决办法
8277
查看次数