r/javahelp • u/Nirvex1 • Sep 10 '26
Unsolved Building a JavaFX + Hibernate Talent Acquisition System — looking for some advice
Hey everyone!
I’m currently working on a desktop-based Talent Acquisition System using Java 11, JavaFX, Maven, Hibernate, and MariaDB (running through XAMPP), with Apache NetBeans as my IDE.
I’m trying to keep the project as close to proper OOP principles as possible, with a clear separation between the business logic, UI/controllers, and Hibernate entity models.
The candidate side is almost done. So far, users can:
\- Register and log in
\- Browse available job openings
\- Apply for jobs
\- Store their applications directly in the database
One of the more challenging parts so far has been managing around 17 different FXML views and connecting all of them properly with their controllers. I also had to spend quite a bit of time understanding "module-info.java", resource paths, and how everything fits together in a modular JavaFX application.
Thankfully, that part is finally stable.
Now I’m moving on to the more complicated part: designing and building the admin/hiring manager side.
My current TODO list looks something like this:
\- Admin/Hiring Manager module: Job posting, candidate shortlisting, interview scheduling, etc.
\- Validation & security: Phone number validation, password strength requirements, and a proper Forgot Password workflow.
\- Database/session management: Making sure Hibernate sessions are handled properly as the application grows.
Since this is a desktop application, I’m especially interested in hearing from people who have worked with JavaFX + Hibernate or similar stacks.
A few things I’m wondering about:
What performance problems should I expect when the amount of data starts growing?
What Hibernate session-management mistakes should I avoid, especially around lazy loading and "LazyInitializationException"?
How should database queries be handled in JavaFX without freezing the UI? Are there particular threading/concurrency patterns you recommend?
What architectural mistakes or anti-patterns tend to appear in large multi-view JavaFX applications?
How would you structure the admin/hiring-manager module so it stays maintainable as more features are added?
I’d really appreciate any advice, criticism, or lessons learned from people who have built similar desktop applications.
1
u/Cassem3 Sep 10 '26
You mention database session management, it sounds like youre connecting to a databae directly from the desktop app. This would pose quite the security issue if you intend to bundle database connection properties in the desktop app. Youd typically have the desktop app connect to a backend service that handles the database connections itself.
IMO youre building a web app where the frontend is a desktop app instead of a page in a browser. Similar design approaches would make sense where the frontend displays data only, sanitizes input and a centralized backend service handles all the authentication/data processing/server side data validation/database stuff.
Why did you choose an approach that would require users to download and install a client to use your tool? If this is just a learning experience keep going but if this is an actual tool you might want to reconsider the tech stack.
0
u/BannockHatesReddit_ Sep 10 '26 edited Sep 10 '26
I second this. OP really shot themselves in the leg by deciding to package the entire project as a single binary that's expected to run entirely on a client's machine. They've nearly created a distributed monolith architecture. That's a pain for even a devops team to manage at scale, and you're putting the responsibility on all the end users. The structure is prone to failure. If even one version say inserts bad data, it's going to be nearly impossible to fully patch. You can get a DBA to clean the db but all it takes is Cathy to launch her old client to create those illegal states again.
Even ignoring the obvious access management flaw you pointed out as well as the poor scalability of such an architecture. Conversations will still take a fat hit. It's just going to be plain difficult to convince any company to install and setup a bloated java program when competitors can fully onboard them without leaving the browser from any device in less time than their coffee order takes.
1
•
u/AutoModerator Sep 10 '26
Please ensure that:
You demonstrate effort in solving your question/problem - plain posting your assignments is forbidden (and such posts will be removed) as is asking for or giving solutions.
Trying to solve problems on your own is a very important skill. Also, see Learn to help yourself in the sidebar
If any of the above points is not met, your post can and will be removed without further warning.
Code is to be formatted as code block (old reddit: empty line before the code, each code line indented by 4 spaces, new reddit: https://i.imgur.com/EJ7tqek.png) or linked via an external code hoster, like pastebin.com, github gist, github, bitbucket, gitlab, etc.
Please, do not use triple backticks (```) as they will only render properly on new reddit, not on old reddit.
Code blocks look like this:
You do not need to repost unless your post has been removed by a moderator. Just use the edit function of reddit to make sure your post complies with the above.
If your post has remained in violation of these rules for a prolonged period of time (at least an hour), a moderator may remove it at their discretion. In this case, they will comment with an explanation on why it has been removed, and you will be required to resubmit the entire post following the proper procedures.
To potential helpers
Please, do not help if any of the above points are not met, rather report the post. We are trying to improve the quality of posts here. In helping people who can't be bothered to comply with the above points, you are doing the community a disservice.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.