上morphium
几个问题,我是新来morphium,去了通文档和测试,并有它几个问题。上morphium
1:是Morphium对象线程安全,我们可以保留一个静态引用(只创建一次)并在所有线程中使用?如果是的话,要注意什么?我们还应该保持一个静态参考MorphimConfig对象,并创建Morphium从中对象每次它需要的?
创建Morphium对象是否也会创建与mongo DB的新连接?它会在GC连接后自动关闭/释放连接吗?
下一个问题是关于生命周期回调方法,即prestore,poststore等。这些应该在具有适当注释的实体类中进行。是否可以在其他地方定义它们以保持我的实体类最不受污染并依赖于吗啡?即如果仅在pojos中留下注释,稍后可能很容易切换到另一个提供者。
我的许多pojos都有很长的id字段(我不会在每个集合中有太多的文档,所以它不应该是个问题),并尝试将SequenceGenerator与PreStore()一起使用。 SeqGen需要morphium实例,这意味着我需要创建一个更morphium对象为预存(),即使一个morphium已经在处理的实体。是否有可能获得触发回调的相同吗啡实例的句柄?或者吗啡实例等被传入回调?或者优选地,我建议再提供一个像'AutoIncrement'的注释,当它放在一个Long类型的ID字段中并且没有值在字段中时,morphium可以在内部使用SeqGen来将适当的值放入该字段中,并返回新的价值/实体。这会使它完全透明。
我也想用“morphium”标记,但不能创建一个新的标签。如果有人可以请创建并标记问题,那会很好。
谢谢。
这里一些答案:
Morphium是100%线程安全的。我们在几个项目中使用它作为单例。即使Morphium的内置缓存也是线程安全的。 Morphium本身保持对配置对象的引用。
Morphium使用连接池(取决于配置和使用的驱动程序)。当在Morphium对象上调用close时,它将关闭所有连接并关闭池(也使用线程池)。如果忘记关闭,则会出现关机挂钩,请在退出时小心。
嗯,是的,没有。回调类本身只在实体类中可用。这是为了预先计算值或某物。
如果你想集中的东西,你也可以注册几个侦听器(StorageListener等)。这些可以按类型或全局注册。
不知道我是否理解正确。如果您将您的ID字段定义为MorphiumID,它将会为您生成。如果你需要很长时间,你可以使用序列发生器。这些是线程安全的,你可以将它们用作单例。如果您有多个Morphium对象,那么也可以在序列通过mongo进行同步时使用。 (有一种锁定,监视算法正在进行,这可以确保甚至几个客户端或Morphiums将获得正确的数字。)
是可能的实现,但我看不出使用Morphium ID的区别。这将被内部转换为ObjectIds,并可以转换为Longs。
希望有所帮助。
谁将其标记为否定的:你是否也想给出一个理由? – pka