1

Topic: That does not suffice in heavy ORM?

That does not suffice you or that is not pleasant to you in modern heavy ORM. The question concerns heavy ORM (c Identity Map), superficial I do not consider. We admit you do not use any of ORM as did not find any ORM which satisfies with the yours requirements. 1) what it is requirements? 2) that should be in ORM that these requirements beat are satisfied? Or you use one of ORM, but in view of its lacks, usage brings set of inconveniences and dead time. 3) what it is lacks? 4) that it is necessary to change in ORM to eliminate these nondeliveries? The question is not addressed to those it are not pleasant to whom heavy ORM basically, and no changes change your decision.

2

Re: That does not suffice in heavy ORM?

Hello, igor-booch, you wrote: IB> 1) What it is requirements? - Possibility  the code; - possibility of changeover of components: a pool of connections, a cache, a plotter of requests, ; - the extension of the classes processing request; - productivity profiling ; - migrations,  tables and circuits in files; IB> 2) That should be in ORM that these requirements beat are satisfied? Magic of friendship. IB> or you use one of ORM, but in view of its lacks, usage brings set of inconveniences and dead time. IB> 3) what it is lacks? It is not pleasant to normally me: - complexity of a configuration. Here washes away to take superficial; - bad  and the documentation (not at everything, but meets); - impossibility of the extension of behavior. For example, absence of support of some types of requests. Or impossibility to convert from application types in types of a DB and it is reverse. Rather often meets. - absence normal (). (). (). Since In few places there are made multilines sausages allow to collect easily in the code the necessary request. In lines it is heavier.

3

Re: That does not suffice in heavy ORM?

F> - the extension of the classes processing request; It is possible more in detail? The extension with what-purpose? What extensions? Give an example, if it is not difficult.

4

Re: That does not suffice in heavy ORM?

Hello, igor-booch, you wrote: F>> - the extension of the classes processing request; IB> It is possible more in detail? The extension with what-purpose? What extensions? Give an example, if it is not difficult. There are different requests to a DB, which not  orm' in the actions resolved by it. For example, I here came across that truncate returns bool and is not select'. And orm assorts only select and the requests returning an amount: update and delete. If it would be possible to expand Query, at me truncate not  an error. I think, it is similar with different create'.

5

Re: That does not suffice in heavy ORM?

F>>> - the extension of the classes processing request; IB>> It is possible more in detail? The extension with what-purpose? What extensions? Give an example, if it is not difficult. F> there are different requests to a DB, which not  orm' in the actions resolved by it. F> for example, I here came across that truncate returns bool and is not select'. And orm assorts only select and the requests returning an amount: update and delete. And if to fulfill truncate directly (bypassing ORM, on a low level), and then to transfer in ORM consequences of this fulfilled directly of operation. For example, fulfilled truncate bypassing ORM. Then simply preempted from ORM all entities. Too concerns difficult DML. Made mass update directly. Then the same update do on entities in storage, beforehand disconnecting change tracking that ORM considered these changes received of a DB, instead of made you. The total: can extensions of classes, and possibility more hand control ORM are necessary not?

6

Re: That does not suffice in heavy ORM?

Hello, igor-booch, you wrote: IB> Too concerns difficult DML. Made mass update directly. Then the same update do on entities in storage, beforehand disconnecting change tracking that ORM considered these changes received of a DB, instead of made you. And so took and wrote the code doing same, but differently twice. And its identity checked - by eyes, a look clear were stuck and all possible errors began to see clearly.

7

Re: That does not suffice in heavy ORM?

And so took and wrote the code doing same, but differently twice. Yes, it , yes, it is bad. But it can a reasonable victim, smaller of harms? Super floppy ORM, eliminating  in any , will be also super difficult, time for bug fixing owing to this complexity will be spent much more, than for bug fixing because two pieces of the code which should do one and too, do a little not one and too. To compare two pieces of the code is much easier, than to understand artful designs superconfigured ORM. It can  is malicious? Aim the end result, lowering of expenditures of labor on development and support, instead of total absence .

8

Re: That does not suffice in heavy ORM?

Hello, igor-booch, you wrote: IB> That does not suffice you or that is not pleasant to you in modern heavy ORM. The question concerns heavy ORM (c Identity Map), superficial I do not consider. IB> it is admissible you do not use any of ORM as did not find any ORM which satisfies with the yours requirements. IB> 1) what it is requirements? IB> 2) that should be in ORM that these requirements beat are satisfied? 1) high complexity from what the mismatch of expected behavior to the real follows. When I wrote on , I had to lead many hours per debugging of source codes simply to understand why it does not work. It is very easy to commit an error in double-sided , in difficult cases, at control of sessions, etc. 1.2) the monolithic architecture which is not admitting finishings, extensions and changeovers of separate parts. I think, too a consequence of high complexity ORM. 2) Or to lick to mirror brightness, or considerably to change the concept.

9

Re: That does not suffice in heavy ORM?

Hello, igor-booch, you wrote: IB> the Total: can extensions of classes, and possibility more hand control ORM are necessary not? To reduce comfort level it is possible only in serious occasions. truncate - not from their number.

10

Re: That does not suffice in heavy ORM?

F> to reduce comfort level it is possible only in serious occasions. F> truncate - not from their number. And in what the comfort and discomfort consists? If the discomfort is a hand control (passage to low level), you can write for yourselves high-level wrappers over passages to low level and comfortably use them. Can create a high-level layer of abstraction over ORM which allows to do manual adjustments. In this case you configure ORM it  means, but as a result receive high level. You consider comfort it to remain always at high level, including at any most thin configuring ORM? For me not comfort, and discomfort as thin adjustment is easier for making manual imperative methods than to consider cross impact of a heap of high-level declarative parameters.

11

Re: That does not suffice in heavy ORM?

Hello, igor-booch, you wrote: F>> to reduce comfort level it is possible only in serious occasions. F>> truncate - not from their number. IB> and in what the comfort and discomfort consists? IB> if discomfort is a hand control (passage to low level), IB> you can write for yourselves high-level wrappers over passages to low level and comfortably use them. And to use on the one hand comfortable orm, and with another -  wrappers. IB> can create a high-level layer of abstraction over ORM which allows to do manual adjustments. And to describe the same that should be already made in orm. IB> In this case you configure ORM it  means, but as a result receive high level. And where then saving? So I can and  the orm therein. But it only time expenditure. IB> you consider comfort it to remain always at high level, including at any most thin configuring ORM? Not clearly that here means under "configuring". Certainly, not it is possible to cover all scenarios orm' since it covers some DBMS. Different extensions or application of pieces specific to a DBMS through . for this purpose become. Yes, I want to remain at high level. For me the variant where I can in the beginning of the program will be comfortable or at a compilation stage to add/expand/nagenerit the features necessary to me since in  all the same the DBMS practically does not change, it is quite enough of it for any situations. I will always know, where that to me  to receive the necessary behavior. And to do wrappers is a waste of time. IB> for me not comfort, and discomfort as thin adjustment is easier for making manual imperative methods than to consider cross impact of a heap of high-level declarative parameters. And quality of a system design consists in it: it is necessary or is not necessary to consider any crutches. If you can not pass to high level stop more low. So at least the system will be complete.

12

Re: That does not suffice in heavy ORM?

IB>> Can create a high-level layer of abstraction over ORM which allows to do manual adjustments. F> and to describe the same that should be already made in orm. IB>> In this case you configure ORM it  means, but as a result receive high level. F> and where then saving? F> so I can and  the orm therein. But it only time expenditure. Let's an analogy with plane. Present that ORM it is the plane. You want the plane which has only one mode - the autopilot. It is possible to specify it any point and it you there delivers. On announcement of developers, the autopilot can adequately react to all possible flight situations (e.g. other plane towards flies). From the pilot it is required to specify route finishing point correctly only. The pilot is abstracted from technical details of control of airplane. By your experience it appeared that the autopilot not always adequately reacts to some flight situations and you want to have possibility it to retrain. But the autopilot is complete system of strongly bound components, and is simple so to redefine one of components it is impossible. I would accept other approach. ORM is a hand-operated plane and the simple autopilot working in 80 % of flight situations. If I want, I will make one more autopilot working in 10 % of flight situations which happen on routes with which I fly only. But in the remained 10 % I will take a steering wheel on myself. In my opinion, it is the big freedom and  comfort.

13

Re: That does not suffice in heavy ORM?

Hello, igor-booch, you wrote: IB> But the autopilot is complete system of strongly bound components, and is simple so to redefine one of components it is impossible. It is an excuse not to do expanded system. IB> I would accept other approach. ORM is a hand-operated plane and the simple autopilot working in 80 % of flight situations. If I want, I will make one more autopilot working in 10 % of flight situations which happen on routes with which I fly only. But in the remained 10 % I will take a steering wheel on myself. In my opinion, it is the big freedom and  comfort. Also it is necessary to make a choice in each flight situation, than to use.

14

Re: That does not suffice in heavy ORM?

IB>> But the autopilot is complete system of strongly bound components, and is simple so to redefine one of components it is impossible. F> it is an excuse not to do expanded system. You probably understand as the extension not only adding of components and redefinition of components of system. To create absolutely expanded system it is impossible, just as it is impossible to create absolutely safe system. If the system is absolutely expanded it should give the chance to redefine any component and if we redefine all its components from system remains nothing. What then is system? Paradox. Obviously that there is a technological limit of the extension. It is impossible to deliver any processor on the motherboard. Or it should be any difficult and expensive motherboard.

15

Re: That does not suffice in heavy ORM?

Hello, igor-booch, you wrote: IB>>> But the autopilot is complete system of strongly bound components, and is simple so to redefine one of components it is impossible. F>> it is an excuse not to do expanded system. IB> you probably understand as the extension not only adding of components and redefinition of components of system. No.

16

Re: That does not suffice in heavy ORM?

Hello, neFormal, you wrote: F> there are different requests to a DB, which not  orm' in the actions resolved by it. F> for example, I here came across that truncate returns bool and is not select'. And orm assorts only select and the requests returning an amount: update and delete. F> if it would be possible to expand Query, at me truncate not  an error. F> I think, it is similar with different create'. It is strange to demand from orm such functionality: truncate table is ddl which is similar to calls drop table and create table with  indexes, keys and triggers. And ddl in orm should appear only at level of migrations.

17

Re: That does not suffice in heavy ORM?

Hello, igor-booch, you wrote: IB> Let's an analogy with plane. Present that ORM it is the plane... Only to own this plane very expensively: for its content the command of technicians (experts in interiors ORM) and the basing airport (productive iron) is necessary, and obtain the license of the pilot the few can. If to continue analogy on means of transportation, easier and more cheaply to have in the property the car (superficial ORM, direct SQL queries).

18

Re: That does not suffice in heavy ORM?

Hello, igor-booch, you wrote: IB> That does not suffice you or that is not pleasant to you in modern heavy ORM. The question concerns heavy ORM (c Identity Map), superficial I do not consider. Not clearly, in what cases to use all their rich functionality simultaneously, often it starts to hinder more, than to help. Therefore the main requirements: - operation with plain objects; - whenever possible absence of dynamic proxies; - not a monolith: separately are selected mapper, query generator, change tracker, migration tool. But if them to fulfill, orm ceases to be heavy, and becomes a dial-up of superficial libraries and utilities.

19

Re: That does not suffice in heavy ORM?

Hello, amironov79, you wrote: A> it is strange to demand from orm such functionality: truncate table is ddl which is similar to calls drop table and create table with  indexes, keys and triggers. And ddl in orm should appear only at level of migrations. And I want, that  gave all it. Including migrations.

20

Re: That does not suffice in heavy ORM?

A> - operation with plain objects; It is possible more in detail? Plain objects it that? A> not a monolith: separately are selected mapper, query generator, change tracker, migration tool. A> But if them to fulfill, orm ceases to be heavy, and becomes a dial-up of superficial libraries and utilities. Under heavy I understand ORM in which it is implemented Identity Map (in superficial only Table-Class map). The level of modularity has no value. I agree with that that flexibility ORM should to be reached at the expense of modularity. But modern ORM try to reach flexibilities for the account of a considerable quantity of adjustments of one monolithic unit.

21

Re: That does not suffice in heavy ORM?

A> Only to own this plane very expensively: What? Which only with the autopilot or which with hand control possibility?

22

Re: That does not suffice in heavy ORM?

Hello, neFormal, you wrote: F> and I want, that  gave all it. Including migrations. My comment to that usage ddl in any user application with orm or without - the bad practice. But I not absolutely understood in what a problem, you want to make simply truncate means orm or that it still thus  cleaned the?

23

Re: That does not suffice in heavy ORM?

Hello, igor-booch, you wrote: A>> - operation with plain objects; IB> It is possible more in detail? Plain objects it that? Old kind objects: POCO, POJO, Plain Old {Insert Language Here} Object. That is any active records. A>> not a monolith: separately are selected mapper, query generator, change tracker, migration tool. A>> But if them to fulfill, orm ceases to be heavy, and becomes a dial-up of superficial libraries and utilities. IB> under heavy I understand ORM in which it is implemented Identity Map (in superficial only Table-Class map). The level of modularity has no value. I about other modularity where Identity Map not inside orm, and nearby, that is objects are tracked not mapper, and by application (a separate subsystem of model). It is difficult to invent application heavy orm outside of simple crud applications, "gravity" becomes useless and starts to hinder. For example, I cannot understand till now as heavy orm is inscribed in MV* concepts (MVC, MVP, MVVM)? For a simple subsystem of requests it does too much operation and as results of this operation to use in the model not always clearly.

24

Re: That does not suffice in heavy ORM?

Hello, igor-booch, you wrote: A>> Only to own this plane very expensively: IB> What? Which only with the autopilot or which with hand control possibility? Any. In modern orm for switch-off of the autopilot it is necessary to cause the technician, or most to study the plane device, in a cabin of buttons full, but necessary is not present. Easier on foot to walk.

25

Re: That does not suffice in heavy ORM?

Hello, amironov79, you wrote: A> My comment to that usage ddl in any user application with orm or without - the bad practice. It for uniformity of the code. If is dsl through which there is an operation from a DB it be no point to use simultaneously and it, and bare sql. One language is easier. A> but I not absolutely understood in what a problem, you want to make simply truncate means orm or that it still thus  cleaned the? Both that, and that. truncate in the core it is used in tests to drop a state of tables. Problems are not present. Above I simply described that not everywhere it so is supported.