retiring legacy config properties #3791
Replies: 11 comments 13 replies
-
I agree with the general goal. But as the devil is in the details, I'd like to point out a few things... Things like More importantly, moving these settings to a dialect attribute may not be correct either. From what I understand, whether features like So you can have two drivers for the same database/dialect, one of which supports the feature, while the other doesn't. I know postgresql used to have at least two competing JDBC drivers, but I don't know if it's still the case or if it's a widespread problem. |
Beta Was this translation helpful? Give feedback.
-
+100. In principle Overall, I assume you are specifically discussing 6 here. You never said specifically though.
Some, absolutely. Especially the ones represented by E.g. we just talked about how to recognize bags versus lists. That is controlled by a "compliance setting" atm. Personally, for 6, I like the alternative I suggested of making choices based on whether the attribute is typed as a List or a Collections. So that one could go away.
Ha. That was the naming you and Emmanuel decided on. I completely agree
These can probably go away, but is really a larger discussion then about dropping all of the JMX support classes
Generally I agree. Sometimes though it is useful to turn some of these behaviors off. And I am not a fan (as a user) of having to write and maintain a new Dialect just to disable one little thing. Some like wrapping ResultSets are completely unnecessary in 6. The main point of 6 in fact is about removing the need for that one in particular
Again, for 6 fine. But let's keep in mind that dropping backwards compatibility should not be taken lightly. And this one in particular effects what the expected database set up is.
This is handled now via the more complete
+1
No need to be rude here. We all have made past mistakes. |
Beta Was this translation helpful? Give feedback.
-
Folks, how do we make progress on this? I'm happy to do the work, but I need to get permission from ya'll as to which settings I can nuke. |
Beta Was this translation helpful? Give feedback.
-
I think someone just needs to go through them and come up with a
preliminary list to consider.
At least I don't see another way to start.
And I think that is best done here as opposed to say creating a PR removing
a bunch and discussing from there
…On Wed, Sep 8, 2021, 4:03 AM Gavin King ***@***.***> wrote:
Folks, how do we make progress on this?
I'm happy to do the work, but I need to get permission from ya'll as to
which settings I can nuke.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#3791 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AABZIE7UC3PGGBYCFZOMUUTUA4YGZANCNFSM4YVLXEKA>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
|
Beta Was this translation helpful? Give feedback.
-
I know you started. I'll go through the ones you've listed, but having difficulty with my laptop atm and it's impossible to deal with that list from phone |
Beta Was this translation helpful? Give feedback.
-
I think this setting is a nice way to improve startup time, but I have no strong opinion.
I guess this is relevant for people that want to avoid using non-JPA features, so this one should probably stay.
Removing and enabling this by default would cause mappings to change their semantics, so I don't think we should remove that.
Removing and enabling this by default would be a major pain IMO as I know tons of applications that rely on id access not causing a DB query. So this should stay.
I know of applications that rely on this setting to be disabled to avoid duplicating sequence names in the generator names, but I guess we can get rid of this now and enable it by default as the default sequence name is now derived from the generator name.
I have no strong opinion on those. IMO we can remove and enable these settings by default.
The deprecated configs certainly can be removed. I don't mind renaming other properties
I think it is still used by some tools. Since JMX is part of Java SE, I tend to keep it, but I never used it, so I don't have a strong opinion on that.
Remove all the deprecated ones :)
I don't know for sure, but I think Quarkus is a user for some of these config options to improve startup time. Specifying these values allows to continue the startup without a JDBC connection, but maybe @Sanne knows more.
Well, there are some other settings for other dialects as well, like for HANA and MySQL. The Oracle setting can IMO go away. Some other settings like
+1 for removing and enabling by default
+1 for removing without replacement
+1 for removing and enabling by default
Not sure about this one, but it seems like a strange setting to me which we don't even make use of anymore in 6.0. So I'm +0 for removing this without replacement.
+1000 for removing this. We need to cleanup the Dialect and some other classes anyway.
+1 for removing without replacement
+1 for removing without replacement |
Beta Was this translation helpful? Give feedback.
-
I already gave replies initially, but I'll comment here again based on these discussions.. == I'd prefer to keep the JPA compliance settings, for the most part. I added In general, I'd suggest looking at
But this setting is not limited to derived names. In fact, its actually much more relevant for explicitly named ones. IMO this one should stay - we have a much more sane approach here == I generally agree with dropping the non-compliance-related ones.
==
Its more a question of whether people use our JmxService. I cannot answer that definitively. Jira would suggest no. == == Misc
== default {} Aside from the specific ones above, +1 for dropping the rest |
Beta Was this translation helpful? Give feedback.
-
Totally agree on the principle as well - but happy to follow the project lead's advice about such details. In those few cases in which @sebersole doesn't feel strongly, I would suggest to drop flags aggressively. IMO it's totally fine to have the 6.0 release to have a stronger accent of "this is the future"; we can always reintroduce some selection in later minor versions, should there be evidence of real and strong need from feedback. Regarding the JPA compatibility flags, I also agree with Steve: AFAIR these represent particular situations in which we believe the Hibernate semantics are "better" than JPA but also in direct inconsistency with JPA requirements. We should keep offering the "better" option, assuming we still believe that's the case, while some people might need consistency with JPA; so these might be an unavoidable pain point that we'll need to keep around. I suppose ideally we should review each of these to see if the JPA spec isn't too bad, after all - but even in this case we might need a deprecation process so perhaps it's best to face such topics a different time. |
Beta Was this translation helpful? Give feedback.
-
That is actually the plan. To allow |
Beta Was this translation helpful? Give feedback.
-
Folks, this issue is getting urgent. There are actually quite some properties in |
Beta Was this translation helpful? Give feedback.
-
It seems all these are staying for now.
These are all gone.
It's gone, by the looks
Both gone.
Gone.
All still there. Are we really keeping these?
Gone.
Still there, sadly.
Gone.
Seems to be gone.
Gone!
Both still there. I think they should be killed off.
Gone!
Not gone. Exists in some sort of strange sort of purgatorial state between life and death. Just kill it off?
Dead. |
Beta Was this translation helpful? Give feedback.
-
Hibernate has way too many toggles and switches. I bet we could get rid of at least some of them without anyone screaming at us.
Here's a rough list of some of the ones that look like maybe we don't need them anymore:
hibernate.jpa.*
—do we really need to diverge from the JPA spec in all these things?hibernate.ejb.*
—EJB!? If these are still useful they should at least be renamed.hibernate.jmx.*
—does anyone still use JMX?hibernate.connection.acquisition_mode
—this is already deprecated.hibernate.connection.release_mode
—this is already deprecated.hibernate.jdbc.lob_noncontextual_creation
—should be aDialect
attribute, it seems to me.hibernate.jdbc.use_scrollable_resultset
—should be aDialect
attribute, it seems to me.hibernate.jdbc.use_get_generated_keys
—should be aDialect
attribute, it seems to me.hibernate.jdbc.use_streams_for_binary
—should be aDialect
attribute, it seems to me.hibernate.jdbc.wrap_result_sets
—should be aDialect
attribute, it seems to me.hibernate.dialect.oracle.prefer_long_raw
—I have a philosophical objection to this one: settings don't belong to dialects!hibernate.id.new_generator_mappings
—if the new ones are better, let's just use them.hibernate.jpaql_strict_compliance
hibernate.query.substitutions
—we don't just pass through tokens anymore in the "new" HQL, so I don't think this really makes much sense anymore.hibernate.query.validate_parameters
hibernate.query.conventional_java_constants
hibernate.legacy_limit_handler
—we don't need legacy things.hibernate.transaction.factory_class
—this is already deprecated.hibernate.native_exception_handling_51_compliance
—ugh, the name says it all.Surely at least some of these are still needed, but I doubt all of them are. Certain of them should be made attributes of the
Dialect
rather than config properties.Beta Was this translation helpful? Give feedback.
All reactions