This document discusses NoSQL databases and Jakarta Data, which aims to unify data access. It provides examples of using Jakarta Data annotations to define entities, repositories, and queries for NoSQL databases. Key features discussed include basic CRUD operations, named parameters, sorting, pagination, and keyset pagination to improve efficiency. A demo of Jakarta Data on Open Liberty is referenced that implements entities, repositories, and services for accessing crew member data.
Webinar - Key Reasons to Upgrade to MySQL 8.0 or MariaDB 10.11Federico Razzoli
MySQL 5.7 will reach its End Of Life in October 2023. This means that there will be no releases after that date, no bug fixes, and no security fixes.
The documentation will be withdrawn and will no longer be available at some point. Official and non-official drivers and tools will, sooner or later, stop supporting MySQL 5.7.
From here, 5.7 users have two paths. They can upgrade to MySQL 8.0, or they can move to MariaDB. Each option has its benefits and its drawbacks. In this webinar we will explore the differences between MySQL 8.0 and MariaDB 10.11 or 10.6, from both a technical and a less technical perspective.
In this presentation we introduce the basic concepts around SQL Server Azure: the database in the cloud.
Regards,
Ing. Eduardo Castro, PhD
http://ecastrom.blogspot.com
http://comunidadwindows.org
Webinar - Key Reasons to Upgrade to MySQL 8.0 or MariaDB 10.11Federico Razzoli
MySQL 5.7 will reach its End Of Life in October 2023. This means that there will be no releases after that date, no bug fixes, and no security fixes.
The documentation will be withdrawn and will no longer be available at some point. Official and non-official drivers and tools will, sooner or later, stop supporting MySQL 5.7.
From here, 5.7 users have two paths. They can upgrade to MySQL 8.0, or they can move to MariaDB. Each option has its benefits and its drawbacks. In this webinar we will explore the differences between MySQL 8.0 and MariaDB 10.11 or 10.6, from both a technical and a less technical perspective.
In this presentation we introduce the basic concepts around SQL Server Azure: the database in the cloud.
Regards,
Ing. Eduardo Castro, PhD
http://ecastrom.blogspot.com
http://comunidadwindows.org
Cross-Validation Rules: Tips to Optimize your GLeprentise
Cross-validation rules (CVRs) determine which segment values in your chart of accounts (or other key flexfields) can be used together. A CVR controls the valid values that may be used in conjunction with other values. Learn how to set up CVRs, understand the criteria for designing a chart of accounts (COA) that minimizes the number and complexity of your CVRs, and get industry best-practice tips to fine-tune your cross-validation rules. Presented by our COA expert, Harrison Figura.
Learning Objectives: After completion of this program you will be able to:
Objective 1: Learn how cross-validation rules work in Oracle E-Business Suite.
Objective 2: Learn how to set up cross validation rules.
Objective 3: Learn how a good chart of accounts design reduces the need for complex cross-validation rules.
Objective 4: Understand the importance of ranges in designing cross-validation rules.
FIWI…….
Combination of Optical Fiber and Wireless communication.
2 technologies used to implement fiber-wireless (FiWi) networks:
• Free space optical (FSO), also known as
optical wireless (OW)
• Radio & fiber (R&F)
Azure SQL Database now has a Managed Instance, for near 100% compatibility for lifting-and-shifting applications running on Microsoft SQL Server to Azure. Contact me for more information.
Optimize the performance, cost, and value of databases.pptxIDERA Software
Today’s businesses run on data, making it essential for them to access data quickly and easily. This requirement means that databases must run efficiently at all times but keeping a database performing at its best remains a challenging task. Fortunately, database administrators (DBAs) can adopt many practices to achieve this goal, thus saving time and money.
The session will address the following points:
* Introduction to security in Oracle EPM Cloud Planning
* What are the artifacts/granular level that can have security in PBC?
* What are the best practices for addressing security?
* How can you mass update security using EPM Automate, REST API, Groovy, LCM, etc.?
معماری مایکروسرویس/میکروسرویس، سبک خاصی از معماری نرم افزار و مشتق شده از معماری سرویس گرا است که هدف آن خودمختاری بالای سرویس ها از نظر منطق کارکردی-داده ای و نیز پلتفرم پیاده سازی و اجرا است. این سبک معماری علاوه بر معماری سرویس گرا از مفاهیم معماری رخداد محور و سیستمهای توزیع شده نیز بهره برده است. معماری مایکروسرویس را میتوان گونه کامل تر و اصولی تر از تحقق معماری سرویسگرا نسبت به فناوری وب-سرویس و استانداردهای آن دانست که طی دو دهه گذشته معرفی شدند.
Introducing Oracle Fusion Middleware 12.1.3 and especially SOA Suite and BPM ...Lucas Jellema
Overview of Oracle FMW release 12.1.3 in general and about SOA Suite and BPM Suite 12c in particular. Highlights important new features and cross product themes (such as productivity, industrialization, ease of getting started and more). Some topics: Service Bus Pipeline, Native Format transformation, XQuery support, BAM new style, Key Performance and Risk Indicators,...
Troubleshooting tips and tricks for Oracle Database Oct 2020Sandesh Rao
This talk presents 15 different tips and tricks using tools to better troubleshoot and debug problems with Database , Oracle RAC and Oracle Clusterware , ASM and how to get the right pieces of data with the least of commands which today most people do manually. This session will cover tools from the Oracle Autonomous Health Framework (AHF) like Trace file Analyzer (TFA) to collect , organize and analyze log data , Exachk and orachk to perform mass best practices analysis and automation , Cluster Health Advisor to debug node evictions and calibrate the framework , OSWatcher and its analysis engine , oratop for pinpointing performance issues and many others to make one feel like a rockstar DBA.
Cross-Validation Rules: Tips to Optimize your GLeprentise
Cross-validation rules (CVRs) determine which segment values in your chart of accounts (or other key flexfields) can be used together. A CVR controls the valid values that may be used in conjunction with other values. Learn how to set up CVRs, understand the criteria for designing a chart of accounts (COA) that minimizes the number and complexity of your CVRs, and get industry best-practice tips to fine-tune your cross-validation rules. Presented by our COA expert, Harrison Figura.
Learning Objectives: After completion of this program you will be able to:
Objective 1: Learn how cross-validation rules work in Oracle E-Business Suite.
Objective 2: Learn how to set up cross validation rules.
Objective 3: Learn how a good chart of accounts design reduces the need for complex cross-validation rules.
Objective 4: Understand the importance of ranges in designing cross-validation rules.
FIWI…….
Combination of Optical Fiber and Wireless communication.
2 technologies used to implement fiber-wireless (FiWi) networks:
• Free space optical (FSO), also known as
optical wireless (OW)
• Radio & fiber (R&F)
Azure SQL Database now has a Managed Instance, for near 100% compatibility for lifting-and-shifting applications running on Microsoft SQL Server to Azure. Contact me for more information.
Optimize the performance, cost, and value of databases.pptxIDERA Software
Today’s businesses run on data, making it essential for them to access data quickly and easily. This requirement means that databases must run efficiently at all times but keeping a database performing at its best remains a challenging task. Fortunately, database administrators (DBAs) can adopt many practices to achieve this goal, thus saving time and money.
The session will address the following points:
* Introduction to security in Oracle EPM Cloud Planning
* What are the artifacts/granular level that can have security in PBC?
* What are the best practices for addressing security?
* How can you mass update security using EPM Automate, REST API, Groovy, LCM, etc.?
معماری مایکروسرویس/میکروسرویس، سبک خاصی از معماری نرم افزار و مشتق شده از معماری سرویس گرا است که هدف آن خودمختاری بالای سرویس ها از نظر منطق کارکردی-داده ای و نیز پلتفرم پیاده سازی و اجرا است. این سبک معماری علاوه بر معماری سرویس گرا از مفاهیم معماری رخداد محور و سیستمهای توزیع شده نیز بهره برده است. معماری مایکروسرویس را میتوان گونه کامل تر و اصولی تر از تحقق معماری سرویسگرا نسبت به فناوری وب-سرویس و استانداردهای آن دانست که طی دو دهه گذشته معرفی شدند.
Introducing Oracle Fusion Middleware 12.1.3 and especially SOA Suite and BPM ...Lucas Jellema
Overview of Oracle FMW release 12.1.3 in general and about SOA Suite and BPM Suite 12c in particular. Highlights important new features and cross product themes (such as productivity, industrialization, ease of getting started and more). Some topics: Service Bus Pipeline, Native Format transformation, XQuery support, BAM new style, Key Performance and Risk Indicators,...
Troubleshooting tips and tricks for Oracle Database Oct 2020Sandesh Rao
This talk presents 15 different tips and tricks using tools to better troubleshoot and debug problems with Database , Oracle RAC and Oracle Clusterware , ASM and how to get the right pieces of data with the least of commands which today most people do manually. This session will cover tools from the Oracle Autonomous Health Framework (AHF) like Trace file Analyzer (TFA) to collect , organize and analyze log data , Exachk and orachk to perform mass best practices analysis and automation , Cluster Health Advisor to debug node evictions and calibrate the framework , OSWatcher and its analysis engine , oratop for pinpointing performance issues and many others to make one feel like a rockstar DBA.
The amount of data collected by applications nowadays is growing at a scary pace. Many of them need to handle billions of users generating and consuming data at an incredible speed. Maybe you are wondering how to create an application like this? What is required? What works best for your project?
In this session we’ll compare popular Java and JVM persistence frameworks for NoSQL databases: Spring Data, Micronaut, Hibernate OGM, Jakarta NoSQL, and GORM. How do they compare, what are the strengths, weaknesses, differences, and similarities? We’ll show each of them with a selection of different NoSQL database systems (Key-Value, Document, Column, Graph).
The data load on applications has increased exponentially in recent years. We know the JVM (Java Virtual Machine) can cope with heavy loads very well yet we often come across the big dilemma: there are tons of persistence frameworks out there but which one performs best for my case? It would normally take ages to evaluate and choose the best fit for your use case. We’ve done those comparisons for you.
Java and Spring Data JPA: Easy SQL Data Access
Abstract
Presenter: Miya W. Longwe, MBA, MSE, Tech Lead, Staples, Inc, Framingham MA 01702
Accessing data repositories in various applications programming languages typically involves writing of tedious boilerplate lines of code. Some application development frameworks such as Spring have tried to make the experience more succinct by providing abstraction layers such as HibernateTemplate and JdbcTemplate, etc. Despite these APIs, the developers still spend a lot time writing repetitive code than concentrating on implementing business requirements. Developers at Spring, led by Oliver Gierke, introduced Spring Data JPA which “aims to significantly improve the implementation of data access layers by reducing the effort to the amount that's actually needed. As a developer you write your repository interfaces, including custom finder methods, and Spring will provide the implementation automatically”.
Spring Data JPA provides a powerful, out-of-the-box alternative to creating your own DAO framework. You declare custom repository operations on an interface, and the framework generates dynamic implementations (not code generation) automatically, based on conventions around method names. As part of the presentation, we'll also review a demo to look at Spring Java configuration (as opposed to XML configuration), and investigate the @Profile annotation – configuration details which may make life a bit easier in various ways when setting up unit testing of our repository classes, using out-of-the-box alternative to creating DAO framework, how to create custom repositories, pagination and support for custom queries among other features.
Presenter's Bio
Miya W. Longwe is a Senior Software Engineer and Tech Lead at Staples, Inc. where he is currently working on an initiative to re-platform the company’s ecommerce architecture to offer platform-driven, modular products that can be quickly customized, enhanced, and branded as needed.
Miya has been a software professional since 1997. His 16 years software development career includes working for large companies to small startups, building solutions for enterprises and consumers, working with a broad range of technologies.
Miya Longwe is a hands-on java developer. He believes that in order to be a relevant and effective software developer one needs to remain a deeply knowledgeable, up-to-date, and productive software developer. His research interests include model-driven engineering, domain specific languages, test driven development and project risk management.
Miya graduated from the University of Malawi (Lilongwe, Malawi) and has an MBA from the University of Wales Cardiff Business School (Wales, UK) and a Masters in Software Engineering from Brandeis University (MA, USA).
Occasionally, Miya can be spotted fishing the banks of the south shore (MA) with his two boys, William and Daniel.
The NoSQL DB is a database that provides a mechanism for storage and retrieval of data which is modeled in means other than the tabular relations used in relational databases. These databases have speed and high scalability. This kind of database has becoming more popular in several applications, that include financial one. As result of increase the number of user the number of vendors are increasing too, so the current problem how can we avoid lock in? The standard is the answer to solve this problem. Know more about the Diana proposal and the next step to became a NoSQL JSR.
The NoSQL DB is a database that provides a mechanism for storage and retrieval of data which is modeled by means other than the tabular relations used in relational databases. These databases have speed and high scalability. This kind of database has become more popular in several applications, which include financial one. As result of both increases, the number of success cases and the number of vendors. However, NoSQL has issues such as specific behavior, model, different types, and goals. Go deeply in the NoSQL world and how to solve the NoSQL variety on this presentation.
Dicoding Developer Coaching #19: Android | Menyimpan Database Secara Local di...DicodingEvent
Dicoding Developer Coaching merupakan webinar, yang membahas tuntas kendala maupun pertanyaan yang sering ditanyakan di Academy Dicoding.
Tema kali ini adalah "Menyimpan Database Secara Local di Aplikasi Androidmu."
Di sini Anda akan mempelajari tentang pengembangan aplikasi pada berbagai platform yang tidak luput dari proses penyimpanan dan manipulasi data. Pada perangkat Android, terdapat beragam mekanisme penyimpanan yang bergantung pada kebutuhan aplikasi. Pada umumnya penyimpanan dan pengolahan data di Android terbagi menjadi beberapa komponen seperti penyimpan di onSavedInstanceState, penggunaan SharedPreferences, SQLite Database, Content Provider, dan lain sebagainya.
Ajax is the web's hottest user interface. Struts is Java's most popular web framework. What happens when we put Ajax on Struts?
In this session, we look at writing a new Struts 2 application from square one, using the Yahoo User Interface (YUI) Library on the front end, and Struts 2 on the backend. YUI provides the glitz and the glamour, and Struts 2 provides the dreary business logic, input validation, and text formatting.
During the session, we will cover
* How to integrate an Ajax UI with Struts 2
* Basics of the Yahoo User Interface (YUI) Library
* Business services Struts can provide to an Ajax UI
Who should attend: Ajax developers who would like to utilize Struts as a back-end, and Struts developers who would like to utilize Ajax as a front-end.
To get the most from this session, some familiarity with an Ajax library, like YUI or Dojo, is helpful.
Master a Cloud Native Standard - MicroProfile.pptxEmilyJiang23
Everything about MicroProfile, a Cloud Native Application Development Standard. This help you develop a portable microservice without vendor lockin and works well in the Cloud.
Hybrid Cloud Applications Built with Pure Openness
It showcases the cool open technologies MicroProfile, Jakarta EE and Open Liberty ideal for building the modern Hybrid Cloud Applications.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
The Metaverse and AI: how can decision-makers harness the Metaverse for their...Jen Stirrup
The Metaverse is popularized in science fiction, and now it is becoming closer to being a part of our daily lives through the use of social media and shopping companies. How can businesses survive in a world where Artificial Intelligence is becoming the present as well as the future of technology, and how does the Metaverse fit into business strategy when futurist ideas are developing into reality at accelerated rates? How do we do this when our data isn't up to scratch? How can we move towards success with our data so we are set up for the Metaverse when it arrives?
How can you help your company evolve, adapt, and succeed using Artificial Intelligence and the Metaverse to stay ahead of the competition? What are the potential issues, complications, and benefits that these technologies could bring to us and our organizations? In this session, Jen Stirrup will explain how to start thinking about these technologies as an organisation.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™UiPathCommunity
In questo evento online gratuito, organizzato dalla Community Italiana di UiPath, potrai esplorare le nuove funzionalità di Autopilot, il tool che integra l'Intelligenza Artificiale nei processi di sviluppo e utilizzo delle Automazioni.
📕 Vedremo insieme alcuni esempi dell'utilizzo di Autopilot in diversi tool della Suite UiPath:
Autopilot per Studio Web
Autopilot per Studio
Autopilot per Apps
Clipboard AI
GenAI applicata alla Document Understanding
👨🏫👨💻 Speakers:
Stefano Negro, UiPath MVPx3, RPA Tech Lead @ BSP Consultant
Flavio Martinelli, UiPath MVP 2023, Technical Account Manager @UiPath
Andrei Tasca, RPA Solutions Team Lead @NTT Data
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Enhancing Performance with Globus and the Science DMZGlobus
ESnet has led the way in helping national facilities—and many other institutions in the research community—configure Science DMZs and troubleshoot network issues to maximize data transfer performance. In this talk we will present a summary of approaches and tips for getting the most out of your network infrastructure using Globus Connect Server.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
7. Advantages of NoSQL
@emilyfhjiang
@wernerwedge
• Handles large volumes of data at high-speed
• Stores unstructured, semi-structured, or structured
data
• Easy updates to schemas and fields
• Developer-friendly
• Takes advantage of the cloud to deliver zero
downtime
8. Why this talk
Tons of persistence frameworks
Which one performs best for your case?
JVM can cope with heavy loads
Would normally take ages to compare
31. Entity
@Entity
class User {
ObjectId id
String emailAddress
String password
String fullname
Date dateCreated
Date lastUpdated
static constraints = {
emailAddress email: true
password nullable: true
fullname blank: false
}
}}
32. @Document(collection = ”people")
public class person { … }
interface GodRepository extends
MongoRepository<Person, String> { … }
What about the Controller?
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
spring.data.mongodb.database=mythology
spring.data.mongodb.port=27017
Logistics Domain
36. Entities
@Node("Person")
public class PersonEntity {
@Id
private final String name;
private final Integer born;
}
@Node("Movie")
public class MovieEntity {
@Id
private final String title;
@Property("tagline")
private final String description;
@Relationship(type = "ACTED_IN", direction = INCOMING)
private Map<PersonEntity, Roles> actorsAndRoles =
new HashMap<>();
@Relationship(type = "DIRECTED", direction = INCOMING)
private List<PersonEntity> directors = new ArrayList<>();
}
39. Entity
public class Person extends PanacheMongoEntity {
public String name;
public LocalDate birthDate;
public Status status;
// return name as uppercase in the model
public String getName(){
return name.toUpperCase();
}
// store all names in lowercase in the DB
public void setName(String name){
this.name = name.toLowerCase();
}
}
40. Repository
@ApplicationScoped
public class PersonRepository implements
PanacheMongoRepository<Person> {
// put your custom logic here as instance methods
public Person findByName(String name){
return find("name", name).firstResult();
}
public List<Person> findAlive(){
return list("status", Status.ALIVE);
}
public void deleteLoics(){
delete("name", "Loïc");
}
}
41. Motivation
BaseDocument baseDocument = new BaseDocument();
baseDocument.addAttribute(name, value);
Document document = new Document();
document.append(name, value);
JsonObject jsonObject = JsonObject.create();
jsonObject.put(name, value);
ODocument document = new ODocument(“collection”);
document.field(name, value);
43. Entity
@Entity
public class Person{
@Id
private String id;
@Column
private String name;
@Column
private String city;
}
@Entity
public record Book(@Id String id,
@Column("title") String title,
@Column("edition") int edition){}
44. Entity
@Entity
public class Person{
@Id
private String id;
@Column
private String name;
@Column
private String city;
}
key value
key
key
key
value
value
value
Column Family
Graph
Document
Key Value
45. Template
@Inject
Template template;
...
Car ferrari =
template.insert(ferrari);
Optional<Car> car = template.find(Car.class, 1L);
List<Car> cars = template.select(Car.class).where("city").eq("Rome").result();
template.delete(Car.class).where("id").eq(1L).execute();
Optional<Car> result = template.singleResult("select * from Car where id = 1");
50. Jakarta Data Key Elements
ENTITY
REPOSITY
Define methods to
perform CRUD
RESTful Service
Performing CRUD
51. Basic Entity and Repository
▪ DataRepository doesn’t come with any built-in methods. To further simplify…
@Inject
Products products;
…
products.save(new Product(1, "$25 gift card", 25.0f));
List<Product> found = products.findByPriceLessThan(100.0f);
@Repository
public interface Products extends DataRepository<Product, Long> {
List<Product> findByPriceLessThan(float maxPrice);
void save(Product product);
...
}
public record Product(
long id,
String name,
float price
);
entity class
key type
52. Basic Entity and CRUD Repository
@Inject
Products products;
…
products.save(new Product(1, "$25 gift card", 25.0f));
List<Product> found = products.findByPriceLessThan(100.0f);
@Repository
public interface Products extends CrudRepository<Product, Long> {
List<Product> findByPriceLessThan(float maxPrice);
...
}
public record Product(
long id,
String name,
float price
);
entity class
key type
save(E entity);
saveAll(Iterable<E> entities);
findAll();
findById(K id);
existsById(K id);
delete(E entity);
deleteById(K id);
...
Inherited via CrudRepository:
54. Name-Pattern Repository Methods
Compose your own save, findBy, deleteBy, countBy & more methods by
following precise naming conventions with reserved keywords and entity
property names within the method name.
Product[] findByNameLikeAndPriceBetween(String namePattern,
float minPrice,
float maxPrice);
find...By indicates a query returning results
And keyword separates NameLike and PriceBetween conditions
Name and Price are entity property names
Like keyword is a type of condition, requires 1 parameter
Between keyword is a type of condition, requires 2 parameters
55. Repository with Queries
Some queries are too complex to be defined within a method name.
@Query gives you a way to supply a query written in:
JPQL (for Jakarta Persistence-based providers)
@Repository
public interface Products extends CrudRepository<Product, Long> {
@Query("UPDATE Product o SET o.price = o.price - o.price * ?1")
int discountAll(float discountRate);
}
56. Named Parameters
If you prefer to use named parameters, you can do that with @Param,
@Repository
public interface Products extends CrudRepository<Product, Long> {
@Query("UPDATE Product o SET o.price = o.price - o.price * :rate")
int discountAll(@Param("rate") float discountRate);
}
57. Sorting of Results
Reserved keywords OrderBy, Asc, and Desc enable sorting of results.
Product[] findByNameLikeAndPriceBetweenOrderByPriceDescNameAsc(String namePattern,
float minPrice,
float maxPrice);
OrderBy keyword indicates the start of the sorting criteria
Asc keyword indicates ascending sort
Desc keyword indicates descending sort
58. Sorting of Results – better ways
@OrderBy(value = "price", descending = true)
@OrderBy("name")
Product[] findByNameLikeAndPriceBetween(String namePattern,
float minPrice,
float maxPrice);
Method names can get a bit lengthy, so there is also
@OrderBy annotation for sorting criteria that is known in advance
Sort parameters for dynamic sorting
Product[] findByNameLikeAndPriceBetween(String namePattern,
float minPrice,
float maxPrice,
Sort...);
found = products.findByNameLikeAndPriceBetween(namePattern, 10.00f, 20.00f,
Sort.desc("price"), Sort.asc("name"));
59. Without Method Name Magic?
@Filter(by = "price", op = Compare.Between)
@Filter(by = "name", fn = Function.IgnoreCase, op = Compare.Contains)
@OrderBy("price")
Product[] inPriceRange(float min, float max, String namePattern);
@Filter(by = "name")
@Update(attr = "price", op = Operation.Multiply)
boolean inflatePrice(String productName, float rate);
@Delete
@Filter(by = "reviews", op = Compare.Empty)
int removeUnreviewed();
It could be possible to define queries entirely with annotations.
• This idea was deferred to post v1.0, but Open Liberty has it working in
a prototype:
Javadoc:
https://ibm.biz/JakartaData
60. Limiting the Number of Results
@OrderBy("price")
Product[] findFirst10ByNameLike(String namePattern);
Sometimes you don’t want to read the entire matching dataset and only
care about the first several results.
First keyword indicates the start of the sorting criteria
10 numeric value optionally indicates how many.
When absent, only the very first result is returned.
Another way:
@OrderBy("price")
Product[] findByNameLike(String namePattern, Limit limit);
found = products.findByNameLike(namePattern, Limit.of(10));
61. Offset Pagination
@OrderBy("price")
@OrderBy("name")
Page<Product> findByNameLikeAndPriceBetween(String namePattern,
float minPrice,
float maxPrice,
Pageable pagination);
For large datasets, you can read data in pages, defined by the Pageable parameter,
Offset pagination is convenient to users jumping multiple pages ahead or behind.
But it’s inefficient in making the database fetch unwanted results, and
if data is modified, some results might be missed or duplicated between pages!
for (Pageable p = Pageable.ofSize(50); p != null; ) {
Page<product> page = products.findByNameLikeAndPriceBetween(pattern, 40.0f, 60.0f, p);
...
p = page.nextPageable();
}
62. Keyset Pagination
Reduces scenarios where results are missed or duplicated across pages.
• Entity properties that serve as the sort criteria must not be modified.
Gives the Pageable awareness of cursor position from a prior page.
• Jakarta Data provider automatically adds conditions to the query
making the previous cursor the starting point for the next page.
Can be more efficient because it does not require fetching and skipping
large numbers of results. Unwanted results never match to begin with!
63. Keyset Pagination Examples
@OrderBy("lastName")
@OrderBy("id")
KeysetAwarePage<Employee> findByHoursWorkedGreaterThanEqual(int minHours, Pageable pagination);
Traversing all results,
Or relative to a specific position,
for (Pageable p = Pageable.ofSize(100); p != null; ) {
KeysetAwarePage<Employee> page = employees.findByHoursWorkedGreaterThanEqual(1500, p);
...
p = page.nextPageable();
}
Pageable p = Pageable.ofSize(100).afterKeyset(employee.lastName, employee.id);
page = employees.findByHoursWorkedGreaterThanEqual(1500, p);
Order of keyset keys matches
the order of sort criteria
64. Keyset Pagination – How it Works
@OrderBy("lastName")
@OrderBy("firstName")
@OrderBy("id")
KeysetAwarePage<Employee> findByHoursWorkedGreaterThanEqual(int minHours, Pageable pagination);
Let’s visualize what this could look like if transformed to JPQL:
SELECT o FROM Employee o WHERE (o.hoursWorked >= ?1)
AND ( (o.lastName > ?2)
OR (o.lastName = ?2 AND o.firstName > ?3)
OR (o.lastName = ?2 AND o.firstName = ?3 AND o.id > ?4) )
pagination.getKeysetCursor()
provides the values for ?2, ?3, ?4
65. Jakarta Data Demo on Open Liberty
@emilyfhjiang
@wernerwedge
https://github.com/OpenLiberty/sample-jakarta-data
66. Demo
Entity:
CrewMember
Repository:
CrewMembers
CRUD Service
CrewService
@Inject
CrewMembers crewMembers;
…
@DELETE
@Path("/{id}")
public String remove(@PathParam("id") String id)
{
crewMembers.deleteByCrewID(id);
return "";
}
@Repository
public interface CrewMembers extends
DataRepository<CrewMember, String> {
@OrderBy("crewID")
List<CrewMember> findAll();
void deleteByCrewID(String crewID);
void save(CrewMember a);
}
@Entity
public class CrewMember {
@NotEmpty(message = "All crew members must have a name!")
private String name;
@Pattern(regexp = "(Captain|Officer|Engineer)", message =
"Crew member must be one of the listed ranks!")
private String rank;
@Id
@Pattern(regexp = "^d+$", message = "ID Number must be a
non-negative integer!")
private String crewID;